zf

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

commit 37654da007344554c8054b46b7fa348ba063286f
parent a0754eb65b5860ccf4f6f2fb7a0111f14afa8314
Author: srfsh <dev@srf.sh>
Date:   Mon, 20 Jun 2022 16:37:29 +0300

devop: move docker-related files to a dedicated directory

Diffstat:
M.gitignore | 5++++-
DDockerfile | 44--------------------------------------------
Adevop/.docker-compose.templ | 45+++++++++++++++++++++++++++++++++++++++++++++
Adevop/Dockerfile | 41+++++++++++++++++++++++++++++++++++++++++
Ddocker-compose.yml | 31-------------------------------
5 files changed, 90 insertions(+), 76 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -97,8 +97,11 @@ # devops stuff !/.dockerignore +!/devop/ +/devop/* !/devop/Dockerfile -!/devop/docker-compose.yml +!/devop/.docker-compose.templ +!/devop/Dockerfile-zvmlet # github stuff !/.github/ diff --git a/Dockerfile b/Dockerfile @@ -1,44 +0,0 @@ -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/devop/.docker-compose.templ b/devop/.docker-compose.templ @@ -0,0 +1,45 @@ +version: "3.8" +services: + srv: + container_name: srv + image: zenflows:latest + build: + context: ../ + dockerfile: devop/Dockerfile + args: + MIX_ENV: prod + ports: + - 8000:8000 + environment: + DB_HOST: db + DB_NAME: &db_name zenflows + DB_USER: &db_user zenflows_dbuser + DB_PASS: &db_pass $DB_PASS + # DB_PORT: 5432 + + ROOM_ENDPOINT: zvmlet:3000 + ROOM_SALT: $ROOM_SALT + depends_on: + - zvmlet + - db + stdin_open: true + tty: true + db: + container_name: db + image: postgres:12-alpine + environment: + POSTGRES_DB: *db_name + POSTGRES_USER: *db_user + POSTGRES_PASSWORD: *db_pass + volumes: + - /var/lib/postgresql/data + zvmlet: + container_name: zvmlet + image: zvmlet:latest + build: + context: ../ + dockerfile: devop/zvmlet-dockerfile + environment: + HTTP_PORT: 3000 + volumes: + - ../zencode:/restroom-mw/contracts:ro diff --git a/devop/Dockerfile b/devop/Dockerfile @@ -0,0 +1,41 @@ +ARG MIX_ENV=prod + + +FROM elixir:1.13-alpine AS build +ARG MIX_ENV +ENV MIX_ENV=$MIX_ENV + +WORKDIR /app + +RUN mix do local.hex --force, local.rebar --force + +COPY mix.exs mix.lock ./ +COPY conf/buildtime.exs conf/ +COPY .deps deps +RUN mix deps.compile --only "$MIX_ENV" + +COPY conf conf +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++ ncurses-libs + +ARG USER=zenflows GROUP=zenflows +RUN addgroup -S "$GROUP" && adduser -SG"$GROUP" "$USER" +USER "$USER" + +WORKDIR /app + +COPY --from=build --chown="$USER:$GROUP" /app/_build/"$MIX_ENV"/rel/zenflows ./ + +EXPOSE 8000 + +ENTRYPOINT ["bin/zenflows"] + +CMD ["start"] diff --git a/docker-compose.yml b/docker-compose.yml @@ -1,31 +0,0 @@ -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