version: '2.1' networks: lb_web: external: true back: driver: bridge ipam: driver: default config: - subnet: 10.0.${SUBNET}.0/24 services: web: image: libresh/discourse-web:${DISCOURSE_VERSION:-stable} volumes: - ./data/assets:/home/discourse/discourse/public/assets - ./data/uploads:/home/discourse/discourse/public/uploads environment: - VIRTUAL_HOST - LETSENCRYPT_HOST - VIRTUAL_PORT=80 networks: - back - lb_web depends_on: - app app: image: libresh/discourse:${DISCOURSE_VERSION:-stable} command: bundle exec config/unicorn_launcher -E production -c config/unicorn.conf.rb volumes: - ./data/assets:/home/discourse/discourse/public/assets - ./data/uploads:/home/discourse/discourse/public/uploads - ./data/backups:/home/discourse/discourse/public/backups environment: - DISCOURSE_HOSTNAME=$VIRTUAL_HOST - POSTGRES_USER=discourse - DISCOURSE_SMTP_PORT=587 - DISCOURSE_SMTP_ADDRESS - DISCOURSE_SMTP_USER_NAME - DISCOURSE_SMTP_PASSWORD - DISCOURSE_DB_PASSWORD - DISCOURSE_DB_HOST=postgres - UNICORN_BIND_ALL=true depends_on: - redis - postgres networks: - back sidekiq: image: libresh/discourse:${DISCOURSE_VERSION:-stable} command: bundle exec sidekiq -q critical -q default -q low -v volumes: - ./data/assets:/home/discourse/discourse/public/assets environment: - DISCOURSE_HOSTNAME=$VIRTUAL_HOST - POSTGRES_USER=discourse - DISCOURSE_SMTP_PORT=587 - DISCOURSE_SMTP_ADDRESS - DISCOURSE_SMTP_USER_NAME - DISCOURSE_SMTP_PASSWORD - DISCOURSE_DB_PASSWORD depends_on: - redis - postgres networks: - back postgres: image: postgres:${POSTGRES_VERSION:-12-alpine} volumes: - ./data/postgres:/var/lib/postgresql/data networks: - back environment: - POSTGRES_USER=discourse - POSTGRES_PASSWORD redis: image: redis:${REDIS_VERSION:-4-alpine} command: ["--appendonly","yes"] networks: - back volumes: - ./data/redis:/data