zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

commit a5191c7af0d1bba2615485f1a63c1ac4a10f55cd
parent f8d27b5bd543ed9aae7f3a2b5cc6d1df7c268ed4
Author: srfsh <dev@srf.sh>
Date:   Fri, 27 May 2022 18:11:14 +0300

add Docker stuff

Diffstat:
M.gitignore | 4++++
ADockerfile | 44++++++++++++++++++++++++++++++++++++++++++++
Adocker-compose.yml | 31+++++++++++++++++++++++++++++++
3 files changed, 79 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -15,6 +15,10 @@ cover/ !/LICENSE !/README +# docker stuff +!/Dockerfile +!/docker-compose.yml + # useful things !/.iex.exs !/.credo.exs diff --git a/Dockerfile b/Dockerfile @@ -0,0 +1,44 @@ +ARG MIX_ENV=prod +FROM elixir:1.13-alpine AS build + +WORKDIR /app + +ARG MIX_ENV +ENV MIX_ENV="${MIX_ENV}" + +RUN mix do local.hex --force, local.rebar --force + +COPY mix.exs mix.lock ./ +COPY conf conf +RUN mix do deps.get, deps.compile --only "${MIX_ENV}" + +COPY priv priv +COPY src src +RUN mix do compile, release + + +FROM alpine:3.16 AS app + +ARG MIX_ENV +ENV MIX_ENV="${MIX_ENV}" + +RUN apk add --no-cache libstdc++ openssl ncurses-libs + +ENV USER=zenflows +ENV GROUP=zenflows +ENV GID=1000 +ENV UID=1000 + +WORKDIR "/home/${USER}/app" + +RUN addgroup -Sg"${GID}" "${GROUP}" \ + && adduser -s/bin/sh -u"${UID}" -G"${GROUP}" -h"/home/${USER}" -D "${USER}" \ + && su "${USER}" + +USER "${USER}" + +COPY --from=build --chown="${USER}":"${GROUP}" /app/_build/"${MIX_ENV}"/rel/zenflows ./ + +ENTRYPOINT ["bin/zenflows"] + +CMD ["start"] diff --git a/docker-compose.yml b/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.8" +services: + srv: + container_name: srv + build: . + ports: + - 4000:4000 + environment: + - DB_NAME=zenflows + - DB_USER=zenflows_dbuser + - DB_PASS=foobar + - DB_HOST=db + # - DB_PORT=5432 + + # - PASS_ITER=160000 + # - PASS_KLEN=64 + # - PASS_SLEN=64 + depends_on: + - db + stdin_open: true + tty: true + + db: + container_name: db + image: postgres:12-alpine + environment: + - POSTGRES_DB=zenflows + - POSTGRES_USER=zenflows_dbuser + - POSTGRES_PASSWORD=foobar + volumes: + - /var/lib/postgresql/data