1- FROM node:18.15.0 AS assets-image
1+ FROM node:18.15.0-alpine AS assets-image
22ENV MIX_ENV=prod
33
4- WORKDIR /tmp
5-
6- RUN mkdir -p codebattle/assets
7-
84WORKDIR /tmp/codebattle/assets
95
10- COPY apps/codebattle/package.json .
11- COPY apps/codebattle/yarn.lock .
6+ COPY apps/codebattle/package.json apps/codebattle/yarn.lock ./
127
13- RUN yarn install --froze -lockfile
8+ RUN yarn install --frozen -lockfile --network-timeout 300000
149
15- COPY apps/codebattle/postcss.config.js .
16- COPY apps/codebattle/.babelrc .
17- COPY apps/codebattle/webpack ./webpack
18- COPY apps/codebattle/assets ./assets
19- COPY apps/codebattle/priv/gettext ./priv/gettext
10+ COPY apps/codebattle/postcss.config.js \
11+ apps/codebattle/.babelrc \
12+ apps/codebattle/webpack \
13+ apps/codebattle/assets \
14+ apps/codebattle/priv/gettext \
15+ ./
2016
2117RUN yarn build
2218
23- FROM elixir:1.18 AS compile-image
19+ FROM elixir:1.18-alpine AS compile-image
2420ARG GIT_HASH
2521
2622ENV APP_VERSION=$GIT_HASH
2723ENV MIX_ENV=prod
2824
2925WORKDIR /opt/app
3026
31- RUN mix local.hex --force \
27+ RUN apk add --no-cache build-base \
28+ && mix local.hex --force \
3229 && mix local.rebar --force
3330
34- COPY mix.exs .
35- COPY mix.lock .
31+ COPY mix.exs mix.lock ./
3632COPY config ./config
3733COPY apps/runner/mix.exs apps/runner/mix.exs
3834COPY apps/phoenix_gon/mix.exs apps/phoenix_gon/mix.exs
3935COPY apps/codebattle/mix.exs apps/codebattle/mix.exs
4036
41- RUN mix do deps.get --only prod, compile
37+ RUN mix do deps.get --only prod, deps. compile
4238
4339COPY ./apps/codebattle/ ./apps/codebattle/
4440COPY ./apps/runner/ ./apps/runner/
4541COPY ./apps/phoenix_gon/ ./apps/phoenix_gon/
4642
4743COPY --from=assets-image /tmp/codebattle/assets/priv/static ./apps/codebattle/priv/static
4844
49- RUN mix phx.digest
50-
51- RUN mix release codebattle \
45+ RUN mix phx.digest \
46+ && mix release codebattle \
5247 && mv _build/prod/rel/codebattle /opt/release
5348
5449FROM nginx:alpine AS nginx-assets
@@ -57,10 +52,9 @@ COPY nginx.conf /etc/nginx/conf.d/default.conf
5752
5853COPY --from=compile-image /opt/release/lib/codebattle-0.1.0/priv/static/assets/ /var/www/assets
5954
60- FROM elixir:1.18 AS runtime-image
55+ FROM elixir:1.18-alpine AS runtime-image
6156
62- RUN apt-get update && apt-get install --no-install-recommends -y ca-certificates wkhtmltopdf git make curl vim \
63- && rm -rf /var/lib/apt/lists/*
57+ RUN apk add --no-cache ca-certificates wkhtmltopdf git make curl vim
6458
6559ARG GIT_HASH
6660
0 commit comments