-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
68 lines (42 loc) · 1.33 KB
/
Copy pathDockerfile
File metadata and controls
68 lines (42 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
ARG ELIXIR_VERSION=1.17.3
ARG ERLANG_VERSION=27.1.1
ARG ALPINE_VERSION=3.20.3
FROM hexpm/elixir:${ELIXIR_VERSION}-erlang-${ERLANG_VERSION}-alpine-${ALPINE_VERSION} AS build
ENV MIX_ENV=prod \
LANG=C.UTF-8
WORKDIR /app
RUN apk add --no-cache build-base
RUN mix local.hex --force && \
mix local.rebar --force
COPY mix.exs mix.lock ./
RUN mix deps.get --only prod && \
mix deps.compile
COPY lib lib
RUN mix compile --warnings-as-errors
RUN mix release
FROM hexpm/elixir:${ELIXIR_VERSION}-erlang-${ERLANG_VERSION}-alpine-${ALPINE_VERSION} AS test
ENV MIX_ENV=test \
LANG=C.UTF-8
WORKDIR /app
RUN apk add --no-cache build-base git
RUN mix local.hex --force && \
mix local.rebar --force
COPY mix.exs mix.lock ./
RUN mix deps.get && mix deps.compile
COPY . .
CMD ["mix", "test"]
FROM alpine:${ALPINE_VERSION} AS runtime
ENV LANG=C.UTF-8
RUN apk add --no-cache libstdc++ openssl ncurses-libs
ARG APP_USER=cashier
ARG APP_UID=1000
ARG APP_GID=1000
RUN addgroup -g ${APP_GID} ${APP_USER} && \
adduser -u ${APP_UID} -G ${APP_USER} -h /app -D ${APP_USER}
WORKDIR /app
COPY --from=build --chown=${APP_USER}:${APP_USER} /app/_build/prod/rel/cashier ./
USER ${APP_USER}
HEALTHCHECK --interval=10s --timeout=5s --start-period=10s --retries=3 \
CMD bin/cashier rpc "IO.puts(:ok)" || exit 1
ENTRYPOINT ["bin/cashier"]
CMD ["start"]