version: "3.7" networks: frontend: backend: volumes: pgdata: opdata: x-op-restart-policy: &restart_policy restart: unless-stopped x-op-image: &image image: openproject/community:${TAG:-11} x-op-app: &app <<: *image <<: *restart_policy environment: RAILS_CACHE_STORE: "memcache" OPENPROJECT_CACHE__MEMCACHE__SERVER: "cache:11211" OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}" DATABASE_URL: "${DATABASE_URL:-postgres://postgres:p4ssw0rd@db/openproject?pool=20&encoding=unicode&reconnect=true}" RAILS_MIN_THREADS: 4 RAILS_MAX_THREADS: 16 USE_PUMA: "true" # set to true to enable the email receiving feature. See ./docker/cron for more options IMAP_ENABLED: "${IMAP_ENABLED:-false}" volumes: - "opdata:/var/openproject/assets" services: db: image: postgres:10 <<: *restart_policy stop_grace_period: "3s" volumes: - "pgdata:/var/lib/postgresql/data" environment: POSTGRES_PASSWORD: p4ssw0rd POSTGRES_DB: openproject networks: - backend cache: image: memcached <<: *restart_policy networks: - backend proxy: <<: *image <<: *restart_policy command: "./docker/prod/proxy" ports: - "${PORT:-8080}:80" environment: APP_HOST: web OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}" depends_on: - web networks: - frontend web: <<: *app command: "./docker/prod/web" networks: - frontend - backend depends_on: - db - cache - seeder worker: <<: *app command: "./docker/prod/worker" networks: - backend depends_on: - db - cache - seeder cron: <<: *app command: "./docker/prod/cron" networks: - backend depends_on: - db - cache - seeder seeder: <<: *app command: "./docker/prod/seeder" restart: on-failure networks: - backend