An encrypted personal cloud built on the AT Protocol.
1FROM hexpm/elixir:1.18.3-erlang-27.3-debian-bookworm-20250317-slim AS build
2
3RUN apt-get update -y && apt-get install -y build-essential git && \
4 apt-get clean && rm -rf /var/lib/apt/lists/*
5
6WORKDIR /app
7
8RUN mix local.hex --force && mix local.rebar --force
9
10ENV MIX_ENV=prod
11
12COPY mix.exs mix.lock ./
13RUN mix deps.get --only $MIX_ENV && \
14 mkdir config && \
15 mix deps.compile
16
17COPY config/config.exs config/prod.exs config/runtime.exs config/
18COPY lib lib
19COPY priv priv
20
21RUN mix compile && mix release
22
23# --- Runtime ---
24
25FROM debian:bookworm-slim
26
27RUN apt-get update -y && apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates && \
28 apt-get clean && rm -rf /var/lib/apt/lists/* && \
29 sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
30
31ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
32
33RUN groupadd -g 1000 opake && useradd -u 1000 -g opake -m opake
34
35WORKDIR /app
36COPY --from=build --chown=1000:1000 /app/_build/prod/rel/opake_appview ./
37COPY --chown=1000:1000 rel/entrypoint.sh ./
38
39USER 1000:1000
40EXPOSE 6100
41
42ENV PHX_SERVER=true
43
44ENTRYPOINT ["./entrypoint.sh"]