version: '3.4' services: db: environment: - POSTGRES_USER=foreman - POSTGRES_PASSWORD=foreman - POSTGRES_DATABASE=foreman - PGDATA=/var/lib/postgresql/data/pgdata hostname: db.example.com image: postgres:12 ports: - '5432' restart: always healthcheck: test: ["CMD-SHELL", "nc -z 127.0.0.1 5432 || exit 1"] interval: 30s timeout: 30s retries: 3 volumes: - db:/var/lib/postgresql/data app: &app_base image: quay.io/foreman/foreman:develop command: bundle exec bin/rails server -b 0.0.0.0 build: context: . environment: - DATABASE_URL=postgres://foreman:foreman@db/foreman?pool=5 - RAILS_MAX_THREADS=5 - RAILS_ENV=production - FOREMAN_FQDN=foreman.example.com - FOREMAN_DOMAIN=example.com - FOREMAN_RAILS_CACHE_STORE_TYPE=redis - FOREMAN_RAILS_CACHE_STORE_URLS=redis://redis-cache:6379/0 - DYNFLOW_REDIS_URL=redis://redis-tasks:6379/0 - REDIS_PROVIDER=DYNFLOW_REDIS_URL hostname: foreman.example.com links: - db - redis-cache - redis-tasks ports: - "${MY_DOCKER_IP:-127.0.0.1}:3000:3000" - "${MY_DOCKER_IP:-127.0.0.1}:5910-5930:5910-5930" restart: always healthcheck: test: ["CMD-SHELL", "nc -z 127.0.0.1 3000 || exit 1"] interval: 5m start_period: 1m orchestrator: <<: *app_base command: bundle exec sidekiq -r ./extras/dynflow-sidekiq.rb -c 1 -q dynflow_orchestrator hostname: orchestrator.example.com ports: [] worker: <<: *app_base command: bundle exec sidekiq -r ./extras/dynflow-sidekiq.rb -c 15 -q default,1 -q remote_execution,1 ports: [] redis-cache: image: redis redis-tasks: image: redis command: redis-server --appendonly yes volumes: - redis-persistent:/data volumes: db: redis-persistent: