# reusable YAML variables x-broker-url: &broker-url "redis://:${REDIS_PASSWORD}@redis:6379/0" x-base-setup: &base-setup build: ./src restart: always env_file: src/.env environment: CELERY_BROKER_URL: *broker-url CELERY_RESULT_BACKEND: *broker-url version: '3.8' volumes: crawls: name: "auto-archiver-api" services: web: <<: *base-setup ports: - "127.0.0.1:8004:8000" command: uvicorn main:app --host 0.0.0.0 --reload volumes: - ./src:/app depends_on: - redis worker: <<: *base-setup command: celery worker --app=worker.celery --loglevel=info --logfile=logs/celery.log volumes: - ./src:/app - /var/run/docker.sock:/var/run/docker.sock - crawls:/crawls # BROWSERTRIX_HOME_HOST:BROWSERTRIX_HOME_CONTAINER, do not change /crawls environment: CELERY_BROKER_URL: *broker-url CELERY_RESULT_BACKEND: *broker-url WACZ_ENABLE_DOCKER: 1 # Enable calling docker from this container BROWSERTRIX_HOME_HOST: auto-archiver-api_crawls BROWSERTRIX_HOME_CONTAINER: /crawls depends_on: - web - redis redis: image: redis:6-alpine restart: always command: redis-server /conf/redis.conf --requirepass ${REDIS_PASSWORD} volumes: - "./redis/data:/data" - "./redis/config:/conf" # dashboard service will only launch the dashboard if "--profile flower" is passed to docker compose; or if explicitly called "docker compose up dashboard" dashboard: <<: *base-setup profiles: - flower command: ["flower", "--app=worker.celery", "--port=5555", "--broker", *broker-url, "--basic_auth=${FLOWER_USERNAME}:${FLOWER_PASSWORD}"] ports: - 5556:5555 depends_on: - web - redis - worker