Files
shooting-event/Dockerfile.phoenix

45 lines
1.2 KiB
Docker
Raw Normal View History

2026-04-29 00:45:48 +04:00
# syntax=docker/dockerfile:1.7
FROM --platform=$BUILDPLATFORM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package.json frontend/pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY frontend/ ./
RUN pnpm build
FROM --platform=$BUILDPLATFORM elixir:1.18.4-otp-28 AS phoenix-builder
ENV MIX_ENV=prod
WORKDIR /app/phoenix
RUN mix local.hex --force && mix local.rebar --force
COPY phoenix/mix.exs phoenix/mix.lock ./
RUN mix deps.get --only prod
RUN mix deps.compile
COPY phoenix/config ./config
COPY phoenix/lib ./lib
COPY phoenix/priv ./priv
RUN mix compile
RUN mix release
FROM --platform=$TARGETPLATFORM elixir:1.18.4-otp-28
RUN groupadd -r app && useradd -r -g app app
WORKDIR /app
COPY --from=phoenix-builder /app/phoenix/_build/prod/rel/shooting_event_phx /app
COPY --from=frontend-builder /app/frontend/dist /app/web
RUN mkdir -p /app/data && chown -R app:app /app
USER app
ENV PHX_SERVER=true
ENV PORT=8080
ENV DB_PATH=/app/data/shooting.db
ENV WEB_DIR=/app/web
ENV SECRET_KEY_BASE=pxh_v1_V2Y3TXF4Rk9OUm5FdlVQc2s3M2hqd0t1Q2pwYUx4N3Vjb2I5Wk1qXzJ5RWRmQnJ
EXPOSE 8080
ENTRYPOINT ["/app/bin/shooting_event_phx"]
CMD ["start"]