refactor(docker-compose): combine dockerfiles with entrypoint (#727)

* combine worker and main image, support encryption key, app secret key env, and postgres pw

* Update docker/entrypoint.sh

fix env file path

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>

* add build tag, move compose to root

* add volumes

* style: remove trailing indent

* refactor(docker-compose): empty encryption env. vars

* docs(docker-compose): update compose folder

* refactor(docker-compose): remove host network

* fix(docker-compose): add environment variable keys

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
This commit is contained in:
ksurl
2022-11-21 11:26:44 -08:00
committed by GitHub
parent d3e13c30a6
commit 92e5ae0ebd
6 changed files with 54 additions and 27 deletions

View File

@@ -3,8 +3,9 @@ FROM node:16
WORKDIR /automatisch
RUN apt-get update && apt-get install -y postgresql-client
COPY ./wait-for-postgres.sh /automatisch/wait-for-postgres.sh
COPY ./entrypoint.sh /entrypoint.sh
RUN yarn global add @automatisch/cli@0.2.0
CMD sh /automatisch/wait-for-postgres.sh automatisch start-worker --env-file /automatisch/storage/.env
EXPOSE 3000
ENTRYPOINT /entrypoint.sh

View File

@@ -1,46 +0,0 @@
version: '3.9'
services:
main:
build:
context: ../images/main
network: host
ports:
- '3000:3000'
depends_on:
- postgres
- redis
environment:
- HOST=localhost
- PROTOCOL=http
- PORT=3000
- APP_ENV=production
- REDIS_HOST=redis
- POSTGRES_HOST=postgres
- POSTGRES_DATABASE=automatisch
- POSTGRES_USERNAME=automatisch_user
volumes:
- automatisch_storage:/automatisch/storage
worker:
build:
context: ../images/worker
network: host
depends_on:
- main
environment:
- APP_ENV=production
- REDIS_HOST=redis
- POSTGRES_HOST=postgres
- POSTGRES_DATABASE=automatisch
- POSTGRES_USERNAME=automatisch_user
volumes:
- automatisch_storage:/automatisch/storage
postgres:
image: 'postgres:14.5'
environment:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_DB: automatisch
POSTGRES_USER: automatisch_user
redis:
image: 'redis:7.0.4'
volumes:
automatisch_storage:

26
docker/entrypoint.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/sh
set -e
export PGPASSWORD="$POSTGRES_PASSWORD"
until psql -h "$POSTGRES_HOST" -U "$POSTGRES_USERNAME" -d "$POSTGRES_DATABASE" -c '\q'; do
>&2 echo "Waiting for Postgres to be ready..."
sleep 1
done
if [ ! -f /automatisch/storage/.env ]; then
>&2 echo "Saving environment variables"
ENCRYPTION_KEY="${ENCRYPTION_KEY:-$(openssl rand -base64 36)}"
APP_SECRET_KEY="${APP_SECRET_KEY:-$(openssl rand -base64 36)}"
echo "ENCRYPTION_KEY=$ENCRYPTION_KEY" >> /automatisch/storage/.env
echo "APP_SECRET_KEY=$APP_SECRET_KEY" >> /automatisch/storage/.env
fi
>&2 echo "Postgres is up - executing command"
if [ -n "$WORKER" ]; then
automatisch start-worker --env-file /automatisch/storage/.env
else
automatisch start --env-file /automatisch/storage/.env
fi

View File

@@ -1,15 +0,0 @@
# syntax=docker/dockerfile:1
FROM node:16
WORKDIR /automatisch
RUN apt-get update && apt-get install -y postgresql-client
COPY ./wait-for-postgres.sh /automatisch/wait-for-postgres.sh
RUN mkdir -p /automatisch/storage
RUN touch /automatisch/storage/.env
RUN echo "ENCRYPTION_KEY=$(openssl rand -base64 36)" >> /automatisch/storage/.env
RUN echo "APP_SECRET_KEY=$(openssl rand -base64 36)" >> /automatisch/storage/.env
RUN yarn global add @automatisch/cli@0.2.0
EXPOSE 3000
CMD sh /automatisch/wait-for-postgres.sh automatisch start --env-file=/automatisch/storage/.env