Merge pull request 'default_sqlite' (#4) from default_sqlite into main
continuous-integration/drone/push Build is passing Details

Reviewed-on: #4
This commit is contained in:
3wordchant 2024-04-11 21:01:44 +00:00
commit da168a62cc
5 changed files with 73 additions and 53 deletions

View File

@ -6,8 +6,6 @@ DOMAIN=n8n.example.com
#EXTRA_DOMAINS=', `www.n8n.example.com`'
LETS_ENCRYPT_ENV=production
SECRET_DB_PASSWORD_VERSION=v1
# Change to `true` to enable sending "anonymous" telemetry data to n8n
# https://docs.n8n.io/reference/data-collection/
N8N_DIAGNOSTICS_ENABLED=false
@ -31,3 +29,7 @@ COMPOSE_FILE="compose.yml"
#N8N_BASIC_AUTH_ACTIVE=true
#N8N_BASIC_AUTH_USER=username
#SECRET_ADMIN_PASSWORD_VERSION=v1
# Use Postgres instead of SQLite
#COMPOSE_FILE="$COMPOSE_FILE:compose.postgres.yml"
#SECRET_DB_PASSWORD_VERSION=v1

Binary file not shown.

60
compose.postgres.yml Normal file
View File

@ -0,0 +1,60 @@
---
version: '3.8'
# Compose for PostGres mode instead of the default sqlite mode.
services:
app:
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=${STACK_NAME}_db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=root
- DB_POSTGRESDB_PASSWORD_FILE=/run/secrets/db_password
depends_on:
- db
secrets:
- db_password
db:
image: postgres:16
networks:
- internal_network
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
- POSTGRES_DB=n8n
configs:
- source: db_entrypoint
target: /docker-entrypoint.sh
mode: 0555
secrets:
- db_password
healthcheck:
test: ["CMD", "pg_isready", "-U", "root", "-d", "n8n"]
volumes:
- 'postgresql_data:/var/lib/postgresql/data'
entrypoint: /docker-entrypoint.sh
deploy:
labels:
backupbot.backup: "true"
backupbot.backup.pre-hook: "bash -c 'PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup.sql'"
backupbot.backup.post-hook: "rm -rf /tmp/backup.sql"
backupbot.backup.path: "/tmp/backup.sql"
secrets:
# db_non_root_password:
# external: true
# name: ${STACK_NAME}_db_non_root_password_${SECRET_DB_NON_ROOT_PASSWORD_VERSION}
db_password:
external: true
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
volumes:
postgresql_data:
configs:
db_entrypoint:
name: ${STACK_NAME}_db_entrypoint_${DB_ENTRYPOINT_VERSION}
file: entrypoint.postgres.sh.tmpl
template_driver: golang

View File

@ -5,27 +5,17 @@ services:
app:
image: n8nio/n8n:0.237.0
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=${STACK_NAME}_db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=root
- DB_POSTGRESDB_PASSWORD_FILE=/run/secrets/db_password
- N8N_PERSONALIZATION_ENABLED
- N8N_DIAGNOSTICS_ENABLED
- N8N_USER_MANAGEMENT_DISABLED
- N8N_BASIC_AUTH_ACTIVE=false
- WEBHOOK_URL=https://${DOMAIN}
- NODE_FUNCTION_ALLOW_EXTERNAL=moment
depends_on:
- db
networks:
- proxy
- internal_network
volumes:
- n8n:/home/node/.n8n
secrets:
- db_password
deploy:
update_config:
failure_action: rollback
@ -44,51 +34,10 @@ services:
- "backupbot.backup=true"
- "backupbot.backup.path=/home/node/.n8n"
db:
image: postgres:16
networks:
- internal_network
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
- POSTGRES_DB=n8n
configs:
- source: db_entrypoint
target: /docker-entrypoint.sh
mode: 0555
secrets:
- db_password
healthcheck:
test: ["CMD", "pg_isready", "-U", "root", "-d", "n8n"]
volumes:
- 'postgresql_data:/var/lib/postgresql/data'
entrypoint: /docker-entrypoint.sh
deploy:
labels:
backupbot.backup: "true"
backupbot.backup.pre-hook: "bash -c 'PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup.sql'"
backupbot.backup.post-hook: "rm -rf /tmp/backup.sql"
backupbot.backup.path: "/tmp/backup.sql"
secrets:
# db_non_root_password:
# external: true
# name: ${STACK_NAME}_db_non_root_password_${SECRET_DB_NON_ROOT_PASSWORD_VERSION}
db_password:
external: true
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
volumes:
n8n:
postgresql_data:
networks:
proxy:
external: true
internal_network:
configs:
db_entrypoint:
name: ${STACK_NAME}_db_entrypoint_${DB_ENTRYPOINT_VERSION}
file: entrypoint.postgres.sh.tmpl
template_driver: golang

9
release/next Normal file
View File

@ -0,0 +1,9 @@
ALERTA ALERTA
N8N recipe is switching from deploying a PostgreSQL and setting it as the database to using the
built-in SQLite database instead. PostgreSQL can still be enabled, see .env.sample for the
lines to add to your configuration to enable it (should retain data that was in Postgres).
There is no clean migration path between sqlite and postgres. Committing to one pretty much
sticks you to that one (there are hacks but it is involved and incomplete).