Schritt7_SQL_Docker

This commit is contained in:
2026-01-09 20:39:59 +01:00
parent deecc5b6de
commit b3433eedfe
2 changed files with 87 additions and 46 deletions
+32 -2
View File
@@ -1,5 +1,35 @@
-- Wird beim ersten Start des Containers automatisch ausgeführt
-- (liegt in /docker-entrypoint-initdb.d/)
--
-- Zweck:
-- - DBs anlegen: n8n, vectors
-- - pgvector Extension in beiden DBs aktivieren
-- - optional Schema vec in vectors vorbereiten
\connect postgres
-- Datenbanken anlegen (idempotent)
SELECT 'CREATE DATABASE n8n'
WHERE NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = 'n8n') \gexec;
SELECT 'CREATE DATABASE vectors'
WHERE NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = 'vectors') \gexec;
-- pgvector in n8n aktivieren (schadet nicht, hilft evtl. später)
\connect n8n
CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS vector;
-- Optional, aber hilfreich: -- pgvector in vectors aktivieren
-- CREATE EXTENSION IF NOT EXISTS pgcrypto; \connect vectors
CREATE EXTENSION IF NOT EXISTS vector;
-- Optional: Schema vorbereiten
CREATE SCHEMA IF NOT EXISTS vec;
-- Optional: Beispiel-Tabelle (Dimension an Embeddings anpassen, z.B. 768 / 1024 / 1536)
-- CREATE TABLE IF NOT EXISTS vec.documents (
-- id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
-- content text,
-- metadata jsonb,
-- embedding vector(1536)
-- );
+55 -44
View File
@@ -1,70 +1,81 @@
services: services:
n8n-db: db:
image: postgres:15-alpine image: pgvector/pgvector:pg16
container_name: n8n-db container_name: customer-db
restart: unless-stopped restart: unless-stopped
environment: environment:
POSTGRES_USER: ${N8N_DB_USER} POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${N8N_DB_PASS} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${N8N_DB_NAME} POSTGRES_DB: ${POSTGRES_DB}
TZ: ${TZ:-Europe/Berlin}
volumes: volumes:
- ./volumes/n8n-db:/var/lib/postgresql/data - db_data:/var/lib/postgresql/data
networks: [custnet] - ./sql/init_pgvector.sql:/docker-entrypoint-initdb.d/10-init_pgvector.sql:ro
networks:
supabase-db: - internal
image: pgvector/pgvector:pg15 healthcheck:
container_name: supabase-db test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} -h 127.0.0.1"]
restart: unless-stopped interval: 10s
environment: timeout: 5s
POSTGRES_USER: ${SB_DB_USER} retries: 12
POSTGRES_PASSWORD: ${SB_DB_PASS}
POSTGRES_DB: ${SB_DB_NAME}
volumes:
- ./volumes/supabase-db:/var/lib/postgresql/data
- ./sql/init_pgvector.sql:/docker-entrypoint-initdb.d/init_pgvector.sql:ro
networks: [custnet]
n8n: n8n:
image: docker.n8n.io/n8nio/n8n:latest image: n8nio/n8n:latest
container_name: n8n container_name: n8n
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- n8n-db db:
condition: service_healthy
ports: ports:
- "5678:5678" - "5678:5678"
environment: environment:
# n8n DB TZ: ${TZ:-Europe/Berlin}
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: n8n-db
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: ${N8N_DB_NAME}
DB_POSTGRESDB_USER: ${N8N_DB_USER}
DB_POSTGRESDB_PASSWORD: ${N8N_DB_PASS}
# n8n base # --- n8n core ---
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
GENERIC_TIMEZONE: Europe/Berlin
N8N_PORT: 5678
# External URL (Reverse Proxy Ziel)
N8N_HOST: ${N8N_HOST} N8N_HOST: ${N8N_HOST}
N8N_PORT: 5678
N8N_PROTOCOL: https N8N_PROTOCOL: https
N8N_PATH: /
N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL} N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL}
WEBHOOK_URL: ${WEBHOOK_URL} WEBHOOK_URL: ${WEBHOOK_URL}
# solange noch kein TLS/Proxy aktiv: # Reverse-Proxy Betrieb (OPNsense davor)
N8N_SECURE_COOKIE: "false" N8N_PROXY_HOPS: 1
N8N_SECURE_COOKIE: true
# optional Basic Auth # Optionaler Basisschutz via BasicAuth
N8N_BASIC_AUTH_ACTIVE: "true" N8N_BASIC_AUTH_ACTIVE: "true"
N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER} N8N_BASIC_AUTH_USER: ${DASHBOARD_USERNAME}
N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD} N8N_BASIC_AUTH_PASSWORD: ${DASHBOARD_PASSWORD}
# Verschlüsselung für Credentials
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
# --- DB für n8n ---
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: db
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
# Qualität-of-life
GENERIC_TIMEZONE: ${TZ:-Europe/Berlin}
volumes: volumes:
- ./volumes/n8n-data:/home/node/.n8n - n8n_data:/home/node/.n8n
networks: [custnet] networks:
- internal
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/ >/dev/null 2>&1 || exit 1"]
interval: 10s
timeout: 5s
retries: 20
networks: networks:
custnet: internal:
driver: bridge driver: bridge
volumes:
db_data:
n8n_data: