103 lines
2.9 KiB
YAML
103 lines
2.9 KiB
YAML
services:
|
|
cloudflared:
|
|
image: cloudflare/cloudflared:latest
|
|
container_name: cloudflared
|
|
restart: unless-stopped
|
|
profiles:
|
|
- cloudflare
|
|
command: ["--config", "/etc/cloudflared/config.yml", "tunnel", "run"]
|
|
volumes:
|
|
- ./docker/cloudflared/config.yml:/etc/cloudflared/config.yml:ro
|
|
- /etc/cloudflared/credentials.json:/etc/cloudflared/credentials.json:ro
|
|
depends_on:
|
|
nginx:
|
|
condition: service_started
|
|
|
|
nginx:
|
|
image: nginx:1.27-alpine
|
|
container_name: inventarsystem-nginx
|
|
restart: unless-stopped
|
|
depends_on:
|
|
app:
|
|
condition: service_started
|
|
ports:
|
|
- "${INVENTAR_HTTP_PORT:-80}:80"
|
|
- "${INVENTAR_HTTPS_PORT:-443}:443"
|
|
volumes:
|
|
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
|
- ./certs:/etc/nginx/certs:ro
|
|
|
|
mongodb:
|
|
image: mongo:7.0
|
|
container_name: inventarsystem-mongodb
|
|
restart: unless-stopped
|
|
volumes:
|
|
- mongodb_data:/data/db
|
|
healthcheck:
|
|
test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: inventarsystem-redis
|
|
restart: unless-stopped
|
|
command: ["redis-server", "--appendonly", "yes", "--save", "60", "1000"]
|
|
volumes:
|
|
- redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 10
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
working_dir: /app/Web
|
|
command: ["gunicorn", "app:app", "--bind", "0.0.0.0:8000", "--workers", "2", "--timeout", "30", "--graceful-timeout", "20", "--max-requests", "200", "--max-requests-jitter", "50", "--log-level", "info", "--access-logfile", "-", "--error-logfile", "-"]
|
|
container_name: inventarsystem-app
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
depends_on:
|
|
mongodb:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
environment:
|
|
INVENTAR_MONGODB_HOST: mongodb
|
|
INVENTAR_MONGODB_PORT: "27017"
|
|
INVENTAR_MONGODB_DB: Inventarsystem
|
|
INVENTAR_REDIS_HOST: redis
|
|
INVENTAR_REDIS_PORT: "6379"
|
|
INVENTAR_REDIS_CACHE_DB: "1"
|
|
INVENTAR_NOTIFICATION_STATUS_CACHE_TTL: "8"
|
|
INVENTAR_BACKUP_FOLDER: /data/backups
|
|
INVENTAR_LOGS_FOLDER: /data/logs
|
|
INVENTAR_DELETED_ARCHIVE_FOLDER: /data/deleted-archives
|
|
expose:
|
|
- "8000"
|
|
volumes:
|
|
- ./config.json:/app/config.json:ro
|
|
- app_uploads:/app/Web/uploads
|
|
- app_thumbnails:/app/Web/thumbnails
|
|
- app_previews:/app/Web/previews
|
|
- app_qrcodes:/app/Web/QRCodes
|
|
- app_backups:/data/backups
|
|
- app_logs:/data/logs
|
|
- app_deleted_archives:/data/deleted-archives
|
|
|
|
volumes:
|
|
mongodb_data:
|
|
app_uploads:
|
|
app_thumbnails:
|
|
app_previews:
|
|
app_qrcodes:
|
|
app_backups:
|
|
app_logs:
|
|
app_deleted_archives:
|
|
redis_data:
|