version: "3.8" # Full Art DAG stack for Docker Swarm deployment # Deploy with: docker stack deploy -c docker-stack.yml artdag services: # Redis for L1 redis: image: redis:7-alpine volumes: - redis_data:/data networks: - artdag deploy: replicas: 1 placement: constraints: - node.role == manager restart_policy: condition: on-failure # L1 Server (API) l1-server: image: git.rose-ash.com/art-dag/l1-server:latest ports: - "8100:8100" environment: - REDIS_URL=redis://redis:6379/5 - CACHE_DIR=/data/cache volumes: - l1_cache:/data/cache depends_on: - redis networks: - artdag deploy: replicas: 1 restart_policy: condition: on-failure # L1 Worker (Celery) l1-worker: image: git.rose-ash.com/art-dag/l1-server:latest command: celery -A celery_app worker --loglevel=info environment: - REDIS_URL=redis://redis:6379/5 - CACHE_DIR=/data/cache volumes: - l1_cache:/data/cache depends_on: - redis networks: - artdag deploy: replicas: 2 restart_policy: condition: on-failure # L2 Server (ActivityPub) l2-server: image: git.rose-ash.com/art-dag/l2-server:latest ports: - "8200:8200" environment: - ARTDAG_DOMAIN=artdag.rose-ash.com - ARTDAG_USER=giles - ARTDAG_DATA=/data/l2 - ARTDAG_L1=http://l1-server:8100 volumes: - l2_data:/data/l2 depends_on: - l1-server networks: - artdag deploy: replicas: 1 restart_policy: condition: on-failure volumes: redis_data: l1_cache: l2_data: networks: artdag: driver: overlay