2021-09-09 23:04:47 +00:00
|
|
|
FROM elixir:1.12.3-alpine AS elixir-builder
|
2020-12-18 20:10:25 +00:00
|
|
|
|
2021-08-05 01:06:16 +00:00
|
|
|
RUN apk add git
|
|
|
|
|
2020-12-18 20:10:25 +00:00
|
|
|
RUN mix local.hex --force \
|
|
|
|
&& mix local.rebar --force
|
|
|
|
|
|
|
|
EXPOSE 4000
|
2021-05-28 17:38:37 +00:00
|
|
|
# Default EPMD port
|
|
|
|
EXPOSE 4369
|
2020-12-18 20:10:25 +00:00
|
|
|
|
|
|
|
ARG MIX_ENV=prod
|
|
|
|
RUN echo ${MIX_ENV}
|
|
|
|
ENV MIX_ENV=$MIX_ENV
|
|
|
|
ENV PORT=4000
|
|
|
|
|
2020-12-22 17:47:16 +00:00
|
|
|
WORKDIR /root/app
|
|
|
|
|
2021-03-26 22:31:54 +00:00
|
|
|
# We load these things one by one so that we can load the deps first and
|
|
|
|
# cache those layers, before we do the app build itself
|
2021-09-26 22:40:56 +00:00
|
|
|
ADD ./priv ./priv
|
2021-06-10 21:23:48 +00:00
|
|
|
ADD ./mix.exs ./mix.lock ./
|
|
|
|
ADD ./config ./config
|
|
|
|
ADD ./apps/admin/mix.exs ./apps/admin/
|
|
|
|
ADD ./apps/app/mix.exs ./apps/app/
|
|
|
|
ADD ./apps/content/mix.exs ./apps/content/
|
|
|
|
ADD ./apps/core/mix.exs ./apps/core/
|
2021-10-22 03:46:19 +00:00
|
|
|
ADD ./apps/object_storage/mix.exs ./apps/object_storage/
|
2021-06-10 21:23:48 +00:00
|
|
|
|
2020-12-18 20:10:25 +00:00
|
|
|
RUN mix deps.get
|
2021-10-20 21:48:30 +00:00
|
|
|
RUN mix deps.compile
|
|
|
|
|
|
|
|
ADD ./apps /root/app/apps
|
2020-12-22 17:47:16 +00:00
|
|
|
|
2021-03-26 22:31:54 +00:00
|
|
|
# Leave off here so that we can built assets and compile the elixir app in parallel
|
2020-12-18 20:10:25 +00:00
|
|
|
|
2021-09-23 23:04:09 +00:00
|
|
|
FROM node:16.10.0 AS asset-builder
|
2021-01-08 18:47:00 +00:00
|
|
|
|
2021-03-26 22:31:54 +00:00
|
|
|
# Build assets in a node container
|
2021-04-24 16:20:17 +00:00
|
|
|
ADD ./apps/app/assets/ /root/app/apps/app/assets/
|
|
|
|
|
2021-01-08 18:47:00 +00:00
|
|
|
WORKDIR /root/app/apps/app/assets/
|
2021-01-08 20:02:09 +00:00
|
|
|
COPY --from=0 /root/app/ /root/app/
|
2021-01-08 18:47:00 +00:00
|
|
|
RUN npm install
|
2021-10-20 21:48:30 +00:00
|
|
|
|
|
|
|
ADD ./apps /root/app/apps
|
2021-01-08 18:47:00 +00:00
|
|
|
RUN npm run deploy
|
|
|
|
|
2021-06-10 21:06:38 +00:00
|
|
|
FROM elixir-builder
|
2021-01-08 18:47:00 +00:00
|
|
|
|
2021-04-24 16:20:17 +00:00
|
|
|
ADD ./apps /root/app/apps
|
|
|
|
|
2021-03-26 22:31:54 +00:00
|
|
|
# Resume compilation of the elixir app
|
|
|
|
RUN MAKE=cmake mix compile
|
2021-01-08 18:47:00 +00:00
|
|
|
|
2021-03-26 22:31:54 +00:00
|
|
|
# Copy in the built assets & fingerprint them
|
2021-06-10 21:23:48 +00:00
|
|
|
COPY --from=asset-builder /root/app/apps/app/priv/static/ /root/app/apps/app/priv/static
|
2021-01-08 18:47:00 +00:00
|
|
|
RUN mix phx.digest
|
|
|
|
|
2021-05-28 17:38:37 +00:00
|
|
|
CMD elixir --name ${NAME:=legendary}@$(hostname -f) -S mix phx.server
|