Files
GuardDen/docker-compose.yml
2026-01-25 16:46:50 +01:00

85 lines
2.3 KiB
YAML

services:
bot:
build:
context: .
args:
INSTALL_AI: ${INSTALL_AI:-true}
image: guardden:latest
container_name: guardden-bot
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
- GUARDDEN_DISCORD_TOKEN=${GUARDDEN_DISCORD_TOKEN}
- GUARDDEN_DATABASE_URL=postgresql://guardden:guardden@db:5432/guardden
- GUARDDEN_LOG_LEVEL=${GUARDDEN_LOG_LEVEL:-INFO}
- GUARDDEN_ALLOWED_GUILDS=${GUARDDEN_ALLOWED_GUILDS:-}
- GUARDDEN_OWNER_IDS=${GUARDDEN_OWNER_IDS:-}
- GUARDDEN_AI_PROVIDER=${GUARDDEN_AI_PROVIDER:-none}
- GUARDDEN_ANTHROPIC_API_KEY=${GUARDDEN_ANTHROPIC_API_KEY:-}
- GUARDDEN_OPENAI_API_KEY=${GUARDDEN_OPENAI_API_KEY:-}
volumes:
- guardden_data:/app/data
- guardden_logs:/app/logs
networks:
- guardden
healthcheck:
test: ["CMD", "python", "-m", "guardden.health", "--check"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
db:
image: postgres:15-alpine
container_name: guardden-db
restart: unless-stopped
environment:
- POSTGRES_USER=guardden
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-guardden}
- POSTGRES_DB=guardden
- POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256
volumes:
- postgres_data:/var/lib/postgresql/data
- ./scripts/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
ports:
- "${POSTGRES_PORT:-5432}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U guardden -d guardden"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- guardden
# Optional: Redis for caching and rate limiting
redis:
image: redis:7-alpine
container_name: guardden-redis
restart: unless-stopped
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-guardden_redis}
volumes:
- redis_data:/data
ports:
- "${REDIS_PORT:-6379}:6379"
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 10s
timeout: 3s
retries: 5
networks:
- guardden
networks:
guardden:
driver: bridge
name: guardden-network
volumes:
postgres_data:
redis_data:
guardden_data:
guardden_logs: