37 lines
795 B
Docker
37 lines
795 B
Docker
FROM elixir:1.17-alpine AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# Install hex and rebar
|
|
RUN mix local.hex --force && \
|
|
mix local.rebar --force
|
|
|
|
# Copy mix files for dependency resolution
|
|
COPY mix.exs mix.lock* ./
|
|
RUN mix deps.get --only prod
|
|
|
|
# Copy source code
|
|
COPY lib ./lib
|
|
COPY run.exs ./
|
|
|
|
# Compile the project (don't run yet)
|
|
RUN MIX_ENV=prod mix compile
|
|
|
|
# Runtime stage
|
|
FROM elixir:1.17-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Install hex and rebar in runtime
|
|
RUN mix local.hex --force && \
|
|
mix local.rebar --force
|
|
|
|
# Copy built application from build stage
|
|
COPY --from=build /app/_build /app/_build
|
|
COPY --from=build /app/deps /app/deps
|
|
COPY --from=build /app/lib /app/lib
|
|
COPY --from=build /app/run.exs /app/run.exs
|
|
COPY --from=build /app/mix.exs /app/mix.exs
|
|
|
|
# Run the application
|
|
CMD ["elixir", "run.exs"]
|