uncloseai.com/public/languages/elixir/httpoison/Dockerfile

45 lines
1.1 KiB
Docker

# PUBLIC DOMAIN - NO LICENSE, NO WARRANTY
# Copyright 2025 TimeHexOn & foxhop & russell@unturf
# https://www.permacomputer.com
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
# Set mix environment to skip Mix.install
ENV MIX_ENV=prod
ENV ERL_FLAGS="-pa _build/prod/lib/*/ebin -pa deps/*/ebin"
# Run the application
CMD ["elixir", "-pa", "_build/prod/lib/*/ebin", "-pa", "deps/*/ebin", "run.exs"]