Files
komodo/stacks/postgres01.compose.yml
Komodo Bot 4c3963a9c3 Migrate Portainer stacks to Komodo
- Add 11 new stack compose files from syn01 and syn02
- syn01 stacks: postgres01, paperless-ngx, minio, beszel-hub, gitea, adguard
- syn02 stacks: radarr, lidarr, sabnzbd, sonarr, arr-cleanup
- Update resources.toml with all new stack definitions
- Remove embedded file_contents from prowlarr stack
- Use environment variables for sensitive data (passwords, API keys)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-14 19:01:33 -08:00

167 lines
3.7 KiB
YAML

version: '3.8'
services:
db:
image: postgres:16
container_name: PostgreSQL
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=root
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_INITDB_ARGS=--encoding=UTF8 --lc-collate=C --lc-ctype=C
command:
- "postgres"
- "-c"
- "shared_buffers=2GB"
- "-c"
- "effective_cache_size=6GB"
- "-c"
- "maintenance_work_mem=512MB"
- "-c"
- "checkpoint_completion_target=0.9"
- "-c"
- "wal_buffers=16MB"
- "-c"
- "default_statistics_target=100"
- "-c"
- "random_page_cost=1.1"
- "-c"
- "effective_io_concurrency=200"
- "-c"
- "work_mem=32MB"
- "-c"
- "min_wal_size=1GB"
- "-c"
- "max_wal_size=4GB"
- "-c"
- "max_worker_processes=8"
- "-c"
- "max_parallel_workers_per_gather=4"
- "-c"
- "max_parallel_workers=8"
- "-c"
- "max_parallel_maintenance_workers=4"
- "-c"
- "max_connections=100"
- "-c"
- "log_min_duration_statement=1000"
- "-c"
- "log_line_prefix=%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h "
- "-c"
- "log_checkpoints=on"
- "-c"
- "log_connections=on"
- "-c"
- "log_disconnections=on"
- "-c"
- "log_lock_waits=on"
- "-c"
- "log_temp_files=0"
- "-c"
- "autovacuum_max_workers=3"
- "-c"
- "autovacuum_naptime=10s"
- "-c"
- "shared_preload_libraries=pg_stat_statements"
volumes:
- /volume1/docker/postgresql:/var/lib/postgresql/data
networks:
- postgres01_default
- paperless_shared
deploy:
resources:
limits:
memory: 8G
reservations:
memory: 4G
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -q -d postgres -U root"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
pgbouncer:
image: pgbouncer/pgbouncer:latest
container_name: PgBouncer
environment:
- DATABASES_HOST=PostgreSQL
- DATABASES_PORT=5432
- DATABASES_USER=root
- DATABASES_PASSWORD=${POSTGRES_PASSWORD}
- DATABASES_DBNAME=paperless
- POOL_MODE=transaction
- MAX_CLIENT_CONN=100
- DEFAULT_POOL_SIZE=25
- MIN_POOL_SIZE=10
- RESERVE_POOL_SIZE=5
- RESERVE_POOL_TIMEOUT=3
- SERVER_IDLE_TIMEOUT=600
- LOG_CONNECTIONS=1
- LOG_DISCONNECTIONS=1
networks:
- paperless_shared
depends_on:
db:
condition: service_healthy
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4:latest
container_name: pgAdmin
environment:
- PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL:-admin@admin.com}
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD:-admin}
- PGADMIN_CONFIG_SERVER_MODE=True
- PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=True
volumes:
- /volume1/docker/postgresadmin:/var/lib/pgadmin
ports:
- "2660:80"
networks:
- postgres01_default
depends_on:
db:
condition: service_healthy
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
postgres01_default:
driver: bridge
paperless_shared:
external: true
name: paperless_shared