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