2026-05-11 13:34:05 +02:00
|
|
|
# Portal umbrella — Elixir/Phoenix web apps
|
|
|
|
|
# Build image stays at 1.19.5 until hexpm publishes 1.20.0 stable.
|
2026-05-11 11:23:14 +02:00
|
|
|
# Dev shell uses 1.20.0-rc.4 via flake.nix.
|
2026-05-11 13:34:05 +02:00
|
|
|
#
|
|
|
|
|
# Two image targets:
|
|
|
|
|
# docker build --target my -t .../centralcloud-my:VERSION .
|
|
|
|
|
# docker build --target staff -t .../centralcloud-staff:VERSION .
|
|
|
|
|
|
2026-05-09 20:45:22 +02:00
|
|
|
FROM hexpm/elixir:1.19.5-erlang-28.3.1-debian-trixie-20260202-slim AS build
|
|
|
|
|
|
|
|
|
|
RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
|
|
|
|
build-essential git npm ca-certificates \
|
|
|
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
ENV MIX_ENV=prod
|
|
|
|
|
|
|
|
|
|
RUN mix local.hex --force && mix local.rebar --force
|
|
|
|
|
|
2026-05-11 13:34:05 +02:00
|
|
|
# Umbrella root + all sub-app deps files (layer-cache friendly)
|
2026-05-09 20:45:22 +02:00
|
|
|
COPY mix.exs mix.lock ./
|
2026-05-11 13:34:05 +02:00
|
|
|
COPY apps/centralcloud_core/mix.exs ./apps/centralcloud_core/
|
|
|
|
|
COPY apps/centralcloud_my/mix.exs ./apps/centralcloud_my/
|
|
|
|
|
COPY apps/centralcloud_staff/mix.exs ./apps/centralcloud_staff/
|
2026-05-09 20:45:22 +02:00
|
|
|
|
|
|
|
|
RUN mix deps.get --only prod && mix deps.compile
|
|
|
|
|
|
2026-05-11 13:34:05 +02:00
|
|
|
COPY config ./config
|
|
|
|
|
COPY apps/centralcloud_core ./apps/centralcloud_core
|
|
|
|
|
COPY apps/centralcloud_my ./apps/centralcloud_my
|
|
|
|
|
COPY apps/centralcloud_staff ./apps/centralcloud_staff
|
|
|
|
|
COPY rel ./rel
|
2026-05-09 20:45:22 +02:00
|
|
|
|
2026-05-11 13:34:05 +02:00
|
|
|
RUN mix compile && \
|
|
|
|
|
mix release centralcloud_my && \
|
|
|
|
|
mix release centralcloud_staff
|
2026-05-09 20:45:22 +02:00
|
|
|
|
2026-05-11 13:34:05 +02:00
|
|
|
# ── Shared runtime base ───────────────────────────────────────────────────────
|
|
|
|
|
FROM debian:trixie-slim AS runtime-base
|
2026-05-09 20:45:22 +02:00
|
|
|
|
|
|
|
|
RUN apt-get update -y && apt-get install -y --no-install-recommends \
|
|
|
|
|
libstdc++6 openssl libncurses6 locales ca-certificates \
|
|
|
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
|
|
RUN useradd --create-home --shell /bin/sh app
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
RUN chown app:app /app
|
|
|
|
|
|
|
|
|
|
USER app
|
|
|
|
|
|
2026-05-11 13:34:05 +02:00
|
|
|
ENV HOME=/app PHX_SERVER=true
|
|
|
|
|
|
|
|
|
|
# ── centralcloud-my ───────────────────────────────────────────────────────────
|
|
|
|
|
FROM runtime-base AS my
|
|
|
|
|
|
2026-05-09 20:45:22 +02:00
|
|
|
COPY --from=build --chown=app:app /app/_build/prod/rel/centralcloud_my ./
|
|
|
|
|
|
|
|
|
|
RUN ln -s /app/bin/centralcloud_my /app/bin/migrate || true
|
|
|
|
|
|
2026-05-11 13:34:05 +02:00
|
|
|
CMD ["/app/bin/server"]
|
|
|
|
|
|
|
|
|
|
# ── centralcloud-staff ────────────────────────────────────────────────────────
|
|
|
|
|
FROM runtime-base AS staff
|
|
|
|
|
|
|
|
|
|
COPY --from=build --chown=app:app /app/_build/prod/rel/centralcloud_staff ./
|
|
|
|
|
|
|
|
|
|
RUN ln -s /app/bin/centralcloud_staff /app/bin/migrate || true
|
2026-05-09 20:45:22 +02:00
|
|
|
|
|
|
|
|
CMD ["/app/bin/server"]
|