commit a5191c7af0d1bba2615485f1a63c1ac4a10f55cd
parent f8d27b5bd543ed9aae7f3a2b5cc6d1df7c268ed4
Author: srfsh <dev@srf.sh>
Date: Fri, 27 May 2022 18:11:14 +0300
add Docker stuff
Diffstat:
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