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

@@ -27,7 +27,7 @@ The official documentation can be found here: [https://automatisch.io/docs](http
git clone git@github.com:automatisch/automatisch.git
# Go to the repository folder
cd automatisch/docker/compose
cd automatisch
# Start
docker compose -p automatisch up

View File

@@ -2,8 +2,9 @@ version: '3.9'
services:
main:
build:
context: ../images/main
network: host
context: ./docker
tags:
- automatisch/automatisch
ports:
- '3000:3000'
depends_on:
@@ -18,12 +19,16 @@ services:
- POSTGRES_HOST=postgres
- POSTGRES_DATABASE=automatisch
- POSTGRES_USERNAME=automatisch_user
- POSTGRES_PASSWORD=automatisch_password
- ENCRYPTION_KEY
- APP_SECRET_KEY
volumes:
- automatisch_storage:/automatisch/storage
worker:
build:
context: ../images/worker
network: host
context: ./docker
tags:
- automatisch/automatisch
depends_on:
- main
environment:
@@ -32,15 +37,25 @@ services:
- POSTGRES_HOST=postgres
- POSTGRES_DATABASE=automatisch
- POSTGRES_USERNAME=automatisch_user
- POSTGRES_PASSWORD=automatisch_password
- ENCRYPTION_KEY
- APP_SECRET_KEY
- WORKER=true
volumes:
- automatisch_storage:/automatisch/storage
postgres:
image: 'postgres:14.5'
environment:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_DB: automatisch
POSTGRES_USER: automatisch_user
- POSTGRES_DB=automatisch
- POSTGRES_USER=automatisch_user
- POSTGRES_PASSWORD=automatisch_password
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: 'redis:7.0.4'
volumes:
- redis_data:/data
volumes:
automatisch_storage:
postgres_data:
redis_data:

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

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

View File

@@ -7,7 +7,7 @@ You can install Automatisch by using docker compose.
git clone git@github.com:automatisch/automatisch.git
# Go to the repository folder
cd automatisch/docker/compose
cd automatisch
# Start
docker compose -p automatisch up