|
1 | 1 | FROM elixir:1.19.1-otp-28-alpine |
2 | 2 |
|
3 | | -# Install Elixir dependencies as root |
| 3 | +# Install Elixir tooling |
4 | 4 | RUN mix local.hex --force \ |
5 | 5 | && mix local.rebar --force \ |
6 | 6 | && mix archive.install hex phx_new --force |
7 | 7 |
|
8 | | -# Install system dependencies |
| 8 | +# Install system dependencies + Node.js + npm + podman |
9 | 9 | RUN apk add --no-cache \ |
10 | 10 | inotify-tools \ |
11 | 11 | curl \ |
12 | 12 | vim \ |
13 | 13 | chromium \ |
14 | 14 | postgresql-client \ |
15 | 15 | build-base \ |
16 | | - git |
| 16 | + git \ |
| 17 | + nodejs \ |
| 18 | + npm \ |
| 19 | + podman |
17 | 20 |
|
18 | | -# Install Node.js and pnpm |
19 | | -RUN apk add --no-cache nodejs npm \ |
20 | | - && npm install --global pnpm |
| 21 | +# Install pnpm globally |
| 22 | +RUN npm install --global pnpm |
21 | 23 |
|
22 | | -# Install Podman for local development |
23 | | -RUN apk add --no-cache podman |
| 24 | +# Base workdir |
| 25 | +WORKDIR /app |
24 | 26 |
|
25 | | -# Add non-root user |
26 | | -RUN adduser -D developer |
| 27 | +ARG GIT_HASH |
| 28 | +ENV APP_VERSION="$GIT_HASH" \ |
| 29 | + NODE_OPTIONS="--max-old-space-size=4096" \ |
| 30 | + PNPM_SKIP_BUILD_SCRIPT_CHECK=1 |
27 | 31 |
|
28 | | -# Copy Hex and other Mix archives from root to developer |
29 | | -RUN cp -R /root/.mix /home/developer/ && chown -R developer:developer /home/developer/.mix |
| 32 | +# Copy repo |
| 33 | +COPY . . |
30 | 34 |
|
31 | | -# Switch to non-root user |
32 | | -USER developer |
| 35 | +# Go to Codebattle app where package.json is |
| 36 | +WORKDIR /app/apps/codebattle |
33 | 37 |
|
34 | | -# Set working directory |
35 | | -WORKDIR /app |
| 38 | +# Install JS dependencies for Codebattle |
| 39 | +RUN pnpm install --force && pnpm add regenerator-runtime |
36 | 40 |
|
37 | | -ARG GIT_HASH |
38 | | -ENV APP_VERSION=$GIT_HASH |
39 | | -ENV NODE_OPTIONS="--max-old-space-size=4096" |
| 41 | +# Build Codebattle assets (change to your real script if needed) |
| 42 | +RUN pnpm run build |
| 43 | + |
| 44 | +# Return to umbrella root for further Elixir steps (mix deps.get, etc., if you add them later) |
| 45 | +WORKDIR /app |
0 commit comments