diff --git a/README.md b/README.md index e89c008e..cdded87a 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docker/compose/docker-compose.yml b/docker-compose.yml similarity index 58% rename from docker/compose/docker-compose.yml rename to docker-compose.yml index 9938eabc..b9b13263 100644 --- a/docker/compose/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/docker/images/worker/Dockerfile b/docker/Dockerfile similarity index 50% rename from docker/images/worker/Dockerfile rename to docker/Dockerfile index 05fa46ea..c1508952 100644 --- a/docker/images/worker/Dockerfile +++ b/docker/Dockerfile @@ -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 diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 00000000..5ac0ae56 --- /dev/null +++ b/docker/entrypoint.sh @@ -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 diff --git a/docker/images/main/Dockerfile b/docker/images/main/Dockerfile deleted file mode 100644 index 9bd1d84b..00000000 --- a/docker/images/main/Dockerfile +++ /dev/null @@ -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 diff --git a/packages/docs/pages/guide/installation.md b/packages/docs/pages/guide/installation.md index 60a0627c..376a71b7 100644 --- a/packages/docs/pages/guide/installation.md +++ b/packages/docs/pages/guide/installation.md @@ -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