legendary-doc-site/Dockerfile

62 lines
1.4 KiB
Text
Raw Normal View History

FROM elixir:1.10.4-alpine AS elixir1
RUN apk add make gcc libc-dev
ENV CC=gcc
ENV MIX_HOME=/opt/mix
RUN mix local.hex --force \
&& mix local.rebar --force
EXPOSE 4000
ARG MIX_ENV=prod
RUN echo ${MIX_ENV}
ENV MIX_ENV=$MIX_ENV
ENV PORT=4000
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
ADD ./config /root/app/config
ADD ./mix.exs /root/app/
ADD ./mix.lock /root/app/
ADD ./apps/admin/mix.exs /root/app/apps/admin/
ADD ./apps/app/mix.exs /root/app/apps/app/
ADD ./apps/content/mix.exs /root/app/apps/content/
ADD ./apps/core/mix.exs /root/app/apps/core/
ADD ./_build/${MIX_ENV}/ /root/app/_build/${MIX_ENV}/
2021-04-24 16:20:17 +00:00
ADD ./deps/ /root/app/deps/
ADD ./script/ /root/app/script/
RUN script/restore-timestamps
RUN mix deps.get
RUN mix deps.compile
2021-03-26 22:31:54 +00:00
# Leave off here so that we can built assets and compile the elixir app in parallel
FROM node:15.0
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/
WORKDIR /root/app/apps/app/assets/
COPY --from=0 /root/app/ /root/app/
RUN npm install
RUN npm run deploy
FROM elixir1
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-03-26 22:31:54 +00:00
# Copy in the built assets & fingerprint them
COPY --from=1 /root/app/apps/app/priv/static/ /root/app/apps/app/priv/static
RUN mix phx.digest
RUN script/restore-timestamps
2021-01-07 21:53:17 +00:00
CMD ["mix", "phx.server"]