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"]