Added n8n

This commit is contained in:
ManUtopiK 2022-10-21 16:49:58 +02:00
parent 3b341e8a97
commit feb1e7a1f2
8 changed files with 120 additions and 20 deletions

View File

@ -2,23 +2,23 @@ services:
hasura:
container_name: $APP_NAME-hasura
image: hasura/graphql-engine:v2.13.0 #.cli-migrations-v3
restart: always
ports:
- 8080:8080
- 8080:8080
depends_on:
postgres:
condition: service_healthy
restart: always
# volumes:
# - ../../hasura/migrations:/hasura-migrations
# - ../../hasura/metadata:/hasura-metadata
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://${ADMIN_USER}:${ADMIN_PASSWORD}@postgres:5432/${POSTGRES_DB:-$APP_NAME}
- HASURA_GRAPHQL_DATABASE_URL=postgres://${POSTGRES_NON_ROOT_USER:-$ADMIN_USER}:${POSTGRES_NON_ROOT_PASSWORD:-$POSTGRES_PASSWORD}@postgres:5432/${HASURA_DB:-postgres}
## enable the console served by server
HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
- HASURA_GRAPHQL_ENABLE_CONSOLE=true # set to "false" to disable console
## enable debugging mode. It is recommended to disable this in production
HASURA_GRAPHQL_DEV_MODE: "true"
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET:-$ADMIN_PASSWORD}
HASURA_GRAPHQL_EXPERIMENTAL_FEATURES: "apollo_federation"
- HASURA_GRAPHQL_DEV_MODE=true
- HASURA_GRAPHQL_ENABLED_LOG_TYPES=startup, http-log, webhook-log, websocket-log, query-log
- HASURA_GRAPHQL_ADMIN_SECRET=${HASURA_GRAPHQL_ADMIN_SECRET:-$ADMIN_PASSWORD}
- HASURA_GRAPHQL_EXPERIMENTAL_FEATURES=apollo_federation
# N8N_DATABASE_URL: postgres://${POSTGRES_NON_ROOT_USER}:${POSTGRES_NON_ROOT_PASSWORD}@postgres:5432/n8n
- N8N_DATABASE_URL=postgres://${POSTGRES_NON_ROOT_USER:-$ADMIN_USER}:${POSTGRES_NON_ROOT_PASSWORD:-$POSTGRES_PASSWORD}@postgres:5432/${N8N_DB:-n8n}

11
composes/n8n/init-data.sh Normal file
View File

@ -0,0 +1,11 @@
#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" -p 5433 <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi

49
composes/n8n/n8n.yml Normal file
View File

@ -0,0 +1,49 @@
x-shared: &shared
image: n8nio/n8n
restart: always
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${N8N_DB:-n8n}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER:-$ADMIN_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD:-$POSTGRES_PASSWORD}
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER:-$ADMIN_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD:-$ADMIN_PASSWORD}
- WEBHOOK_URL=${N8N_WEBHOOK_URL:-}
- N8N_EMAIL_MODE=smtp
- N8N_SMTP_HOST=${SMTP_HOST}
- N8N_SMTP_USER=${SMTP_USER}
- N8N_SMTP_PASS=${SMTP_PASS}
- N8N_SMTP_SENDER=${SMTP_SENDER}
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
links:
- postgres
- redis
volumes:
- n8n_storage:/home/node/
- n8n_storage:/files
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
services:
n8n:
<<: *shared
container_name: $APP_NAME-n8n
command: /bin/sh -c "n8n start --tunnel"
ports:
- 5678:5678
n8n-worker:
<<: *shared
container_name: $APP_NAME-n8n-worker
command: /bin/sh -c "sleep 5; n8n worker"
depends_on:
- n8n

View File

@ -10,4 +10,4 @@ services:
restart: always
depends_on:
postgres:
condition: service_healthy
condition: service_healthy

View File

@ -2,15 +2,28 @@
set -e;
# Add postgis
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE EXTENSION postgis;
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" <<-EOSQL
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS postgis_topology;
EOSQL
# Create non root user and add privileges
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" <<-EOSQL
CREATE USER $POSTGRES_NON_ROOT_USER WITH PASSWORD '$POSTGRES_NON_ROOT_PASSWORD';
GRANT ALL PRIVILEGES ON DATABASE $POSTGRES_DB TO $POSTGRES_NON_ROOT_USER;
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi
# Create n8n table
if [ -n "${N8N_DB:-n8n}" ] && [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
# echo $N8N_SCHEMA $POSTGRES_USER $POSTGRES_NON_ROOT_USER;
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" <<-EOSQL
CREATE DATABASE ${N8N_DB:-n8n};
GRANT ALL PRIVILEGES ON DATABASE ${N8N_DB:-n8n} TO $POSTGRES_NON_ROOT_USER;
EOSQL
else
echo "SETUP INFO: No N8N_DB given!"
fi

View File

@ -6,11 +6,11 @@ services:
dockerfile: Dockerfile
restart: always
environment:
- POSTGRES_DB=${POSTGRES_DB:-$APP_NAME}
- POSTGRES_USER=${POSTGRES_USER:-$ROOT_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-$ROOT_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB:-postgres}
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_NON_ROOT_USER=${POSTGRES_NON_ROOT_USER:-$ADMIN_USER}
- POSTGRES_NON_ROOT_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD:-$ADMIN_PASSWORD}
- POSTGRES_NON_ROOT_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD:-$POSTGRES_PASSWORD}
volumes:
- postgres_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
@ -18,7 +18,7 @@ services:
test:
[
'CMD-SHELL',
'pg_isready -h localhost -U ${POSTGRES_USER:-$ROOT_USER} -d ${POSTGRES_DB:-$APP_NAME}',
'pg_isready -h localhost -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-postgres}',
]
interval: 5s
timeout: 5s

11
composes/redis/redis.yml Normal file
View File

@ -0,0 +1,11 @@
services:
redis:
image: redis:6-alpine
restart: always
volumes:
- redis_storage:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10

View File

@ -18,5 +18,21 @@ services:
file: composes/hasura/hasura.yml
service: hasura
redis:
extends:
file: composes/redis/redis.yml
service: redis
n8n:
extends:
file: composes/n8n/n8n.yml
service: n8n
n8n-worker:
extends:
file: composes/n8n/n8n.yml
service: n8n-worker
volumes:
postgres_storage:
redis_storage:
n8n_storage: