Environment Variable Patterns
Database Connection Pattern:
environment:
# PostgreSQL
POSTGRES_HOST: postgres
POSTGRES_USER: admin
POSTGRES_PASSWORD: [SECRET]
POSTGRES_DB: database_name
# MariaDB
DB_HOST: mariadb
DB_USERNAME: username
DB_PASSWORD: [SECRET]
DB_DATABASE: database_name
Application Configuration Pattern:
environment:
# Application settings
APP_URL: https://service.domain.me
TZ: America/New_York
# User/Group settings (LinuxServer containers)
PUID: 1000
PGID: 1000
# Feature toggles
ENABLE_REGISTRATION: false
DEBUG_MODE: false
Security Configuration Pattern:
environment:
# Secret keys
SECRET_KEY: [SECRET]
APP_KEY: [SECRET]
# Authentication
OAUTH_CLIENT_ID: [SECRET]
OAUTH_CLIENT_SECRET: [SECRET]
Secret and Config Management
Docker Secrets Implementation:
# Secret definition
secrets:
cloudflare_api_token:
file: /mnt/swarm-data/traefik/cloudflare_api_token.txt
# Secret usage in service
services:
traefik:
secrets:
- cloudflare_api_token
environment:
- CF_DNS_API_TOKEN_FILE=/run/secrets/cloudflare_api_token
Configuration File Management:
# External configuration files
volumes:
- /mnt/swarm-data/service/config.yml:/app/config.yml:ro
- /mnt/swarm-data/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
Environment-Specific Configurations:
# Production vs Development patterns
/mnt/swarm-data/
├── webservers/
│ ├── production/
│ │ └── nginx/
│ └── testing/
│ └── nginx/
└── webfiles/
├── production/
└── testing/
Volume Mount Strategies
Bind Mount Best Practices:
# Read-only configuration
- type: bind
source: /mnt/swarm-data/service/config
target: /app/config
read_only: true
# Read-write data
- type: bind
source: /mnt/swarm-data/service/data
target: /app/data
read_only: false
# Named volume (managed by Docker)
volumes:
- service_data:/app/data
Volume Naming Convention:
stackname_servicename_purpose
- Examples:
auth_authentik_media
,paperless_paperless_data
Mount Point Standards:
- Configuration:
/app/config
,/etc/service/
- Data:
/app/data
,/var/lib/service/
- Logs:
/app/logs
,/var/log/service/
- Temporary:
/tmp
,/var/tmp/
Performance Considerations:
- Use bind mounts for frequently accessed data
- Use named volumes for database storage
- Avoid nested mount points
- Consider read-only mounts for configuration files
Backup-Friendly Structure:
# Centralized backup location
/mnt/swarm-data/
├── service1/
│ ├── data/ # Application data
│ ├── config/ # Configuration files
│ └── backup/ # Service-specific backups
└── service2/
├── data/
├── config/
└── backup/