version: "3" services: postgres: image: local_postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: $POSTGRES_PASSWORD POSTGRES_DB: sprint volumes: - /sprint-data/postgres-data:/var/lib/postgresql/data ports: - "5432:5432" deploy: mode: replicated restart_policy: condition: on-failure migrations: image: sprint-base command: ./manage.py migrate depends_on: - postgres deploy: mode: replicated restart_policy: condition: none web: image: sprint-base environment: PORT: $PORT HOST: $HOST debug: "false" command: ./manage.py runserver 0.0.0.0:$PORT --noreload ports: - "${PORT}:${PORT}" depends_on: - migrations - rabbitmq - storage deploy: mode: replicated restart_policy: condition: on-failure storage: image: sprint-base command: ./manage.py storage ports: - "5555:5555" volumes: - /sprint-data/data:/usr/src/app/data deploy: mode: replicated restart_policy: condition: on-failure bot: image: sprint-base environment: HOST: $HOST command: ./manage.py bot depends_on: - web deploy: mode: replicated restart_policy: condition: on-failure loop: image: sprint-base environment: HOST: $HOST command: ./manage.py loop depends_on: - web deploy: mode: replicated restart_policy: condition: on-failure rabbitmq: image: local_rabbitmq ports: - "15672:15672" - "5672:5672" deploy: mode: replicated restart_policy: condition: on-failure worker: image: sprint-base privileged: true command: ./manage.py receive environment: SOLUTIONS_ROOT_EXTERNAL: "${SOLUTIONS_ROOT_EXTERNAL}" HOST: $HOST depends_on: - web - rabbitmq - migrations - storage volumes: - /sprint-data/solutions:/usr/src/app/solutions - /var/run/docker.sock:/var/run/docker.sock deploy: mode: replicated replicas: 4 restart_policy: condition: on-failure apply-languages: image: sprint-base command: ./manage.py apply_languages depends_on: - migrations - web - postgres deploy: mode: replicated restart_policy: condition: none notify-admin: image: sprint-base command: ./manage.py success_deploy depends_on: - migrations - web - worker - storage - rabbitmq - bot - postgres - apply-languages - loop deploy: mode: replicated restart_policy: condition: none