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:
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