diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..7bdd4728dc47d753400207edbee8ccf0f9d2ecaf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +# File: docker_phx/Dockerfile +FROM elixir:1.9-alpine as build + +# install build dependencies +RUN apk add --update git build-base nodejs npm yarn python + +RUN mkdir /app +WORKDIR /app + +# install Hex + Rebar +RUN mix do local.hex --force, local.rebar --force + +# set build ENV +ENV MIX_ENV=prod + +# install mix dependencies +COPY mix.exs mix.lock ./ +COPY config config +RUN mix deps.get --only $MIX_ENV +RUN mix deps.compile + +# build assets +# COPY assets assets +# RUN cd assets && npm install && npm run deploy +# RUN mix phx.digest + +# build project +COPY priv priv +COPY lib lib +RUN mix compile + +# build release +# at this point we should copy the rel directory but +# we are not using it so we can omit it +# COPY rel rel +RUN mix release + +# prepare release image +FROM alpine:3.9 AS app + +# install runtime dependencies +RUN apk add --update bash openssl postgresql-client + +EXPOSE 4000 +ENV MIX_ENV=prod + +# prepare app directory +RUN mkdir /app +WORKDIR /app + + +# copy release to app container +COPY --from=build /app/_build/prod/rel/docker_phx . +COPY entrypoint.sh . +RUN chown -R nobody: /app +USER nobody + +ENV HOME=/app +CMD ["bash", "/app/entrypoint.sh"] \ No newline at end of file