version: "3.8" services: db: image: postgres:17.2-alpine networks: - mediacms environment: POSTGRES_USER: mediacms POSTGRES_PASSWORD: mediacms POSTGRES_DB: mediacms TZ: America/New_York volumes: - /home/doc/projects/swarm-data/appdata/mediacms/postgres:/var/lib/postgresql/data/ healthcheck: test: [ "CMD-SHELL", "pg_isready -d mediacms -U mediacms" ] interval: 10s timeout: 5s retries: 5 deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 placement: constraints: - node.role == manager redis: image: redis:alpine networks: - mediacms healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 3 deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 migrations: image: mediacms/mediacms:latest networks: - mediacms volumes: - /home/doc/projects/swarm-data/appdata/mediacms/media:/home/mediacms.io/mediacms/media_files environment: ENABLE_UWSGI: 'no' ENABLE_NGINX: 'no' ENABLE_CELERY_SHORT: 'no' ENABLE_CELERY_LONG: 'no' ENABLE_CELERY_BEAT: 'no' ADMIN_USER: 'admin' ADMIN_EMAIL: 'john.allisonwin@outlook.com' POSTGRES_HOST: db POSTGRES_DB: mediacms POSTGRES_USER: mediacms POSTGRES_PASSWORD: mediacms REDIS_HOST: redis command: "./deploy/docker/prestart.sh" depends_on: - redis - db deploy: restart_policy: condition: on-failure delay: 5s max_attempts: 3 web: image: mediacms/mediacms:latest networks: - mediacms - homelab ports: - "8880:80" volumes: - /home/doc/projects/swarm-data/appdata/mediacms/media:/home/mediacms.io/mediacms/media_files environment: ENABLE_CELERY_BEAT: 'no' ENABLE_CELERY_SHORT: 'no' ENABLE_CELERY_LONG: 'no' ENABLE_MIGRATIONS: 'no' POSTGRES_HOST: db POSTGRES_DB: mediacms POSTGRES_USER: mediacms POSTGRES_PASSWORD: mediacms REDIS_HOST: redis depends_on: - migrations - db - redis deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 resources: limits: memory: 2G reservations: memory: 512M celery_beat: image: mediacms/mediacms:latest networks: - mediacms volumes: - /home/doc/projects/swarm-data/appdata/mediacms/media:/home/mediacms.io/mediacms/media_files environment: ENABLE_UWSGI: 'no' ENABLE_NGINX: 'no' ENABLE_CELERY_SHORT: 'no' ENABLE_CELERY_LONG: 'no' ENABLE_MIGRATIONS: 'no' POSTGRES_HOST: db POSTGRES_DB: mediacms POSTGRES_USER: mediacms POSTGRES_PASSWORD: mediacms REDIS_HOST: redis depends_on: - redis - db deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 celery_worker: image: mediacms/mediacms:latest networks: - mediacms volumes: - /home/doc/projects/swarm-data/appdata/mediacms/media:/home/mediacms.io/mediacms/media_files environment: ENABLE_UWSGI: 'no' ENABLE_NGINX: 'no' ENABLE_CELERY_BEAT: 'no' ENABLE_MIGRATIONS: 'no' POSTGRES_HOST: db POSTGRES_DB: mediacms POSTGRES_USER: mediacms POSTGRES_PASSWORD: mediacms REDIS_HOST: redis depends_on: - migrations - db - redis deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 resources: limits: memory: 4G reservations: memory: 1G networks: mediacms: driver: overlay homelab: external: true