Schritt7_SQL_Docker
This commit is contained in:
@@ -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;
|
||||
|
||||
-- Optional, aber hilfreich:
|
||||
-- CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
-- pgvector in vectors aktivieren
|
||||
\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)
|
||||
-- );
|
||||
|
||||
@@ -1,70 +1,81 @@
|
||||
services:
|
||||
n8n-db:
|
||||
image: postgres:15-alpine
|
||||
container_name: n8n-db
|
||||
db:
|
||||
image: pgvector/pgvector:pg16
|
||||
container_name: customer-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: ${N8N_DB_USER}
|
||||
POSTGRES_PASSWORD: ${N8N_DB_PASS}
|
||||
POSTGRES_DB: ${N8N_DB_NAME}
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
TZ: ${TZ:-Europe/Berlin}
|
||||
volumes:
|
||||
- ./volumes/n8n-db:/var/lib/postgresql/data
|
||||
networks: [custnet]
|
||||
|
||||
supabase-db:
|
||||
image: pgvector/pgvector:pg15
|
||||
container_name: supabase-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: ${SB_DB_USER}
|
||||
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]
|
||||
- db_data:/var/lib/postgresql/data
|
||||
- ./sql/init_pgvector.sql:/docker-entrypoint-initdb.d/10-init_pgvector.sql:ro
|
||||
networks:
|
||||
- internal
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} -h 127.0.0.1"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
|
||||
n8n:
|
||||
image: docker.n8n.io/n8nio/n8n:latest
|
||||
image: n8nio/n8n:latest
|
||||
container_name: n8n
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- n8n-db
|
||||
db:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "5678:5678"
|
||||
environment:
|
||||
# n8n DB
|
||||
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}
|
||||
TZ: ${TZ:-Europe/Berlin}
|
||||
|
||||
# n8n base
|
||||
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
|
||||
GENERIC_TIMEZONE: Europe/Berlin
|
||||
N8N_PORT: 5678
|
||||
|
||||
# External URL (Reverse Proxy Ziel)
|
||||
# --- n8n core ---
|
||||
N8N_HOST: ${N8N_HOST}
|
||||
N8N_PORT: 5678
|
||||
N8N_PROTOCOL: https
|
||||
N8N_PATH: /
|
||||
N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL}
|
||||
WEBHOOK_URL: ${WEBHOOK_URL}
|
||||
|
||||
# solange noch kein TLS/Proxy aktiv:
|
||||
N8N_SECURE_COOKIE: "false"
|
||||
# Reverse-Proxy Betrieb (OPNsense davor)
|
||||
N8N_PROXY_HOPS: 1
|
||||
N8N_SECURE_COOKIE: true
|
||||
|
||||
# optional Basic Auth
|
||||
# Optionaler Basisschutz via BasicAuth
|
||||
N8N_BASIC_AUTH_ACTIVE: "true"
|
||||
N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER}
|
||||
N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD}
|
||||
N8N_BASIC_AUTH_USER: ${DASHBOARD_USERNAME}
|
||||
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/n8n-data:/home/node/.n8n
|
||||
networks: [custnet]
|
||||
- n8n_data:/home/node/.n8n
|
||||
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:
|
||||
custnet:
|
||||
internal:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
n8n_data:
|
||||
|
||||
Reference in New Issue
Block a user