bettermail/stack.yml
2022-11-12 02:27:46 +01:00

211 lines
4.7 KiB
YAML

version: '3.7'
services:
portal:
image: wizewerx/bettermail_portal:master
command:
- bundle
- exec
- rails
- s
networks:
- default
- routable
configs:
-
source: betbeast
target: /app/.env
logging:
driver: json-file
options:
max-size: 10M
deploy:
labels:
traefik.http.routers.portal.tls: 'true'
traefik.http.routers.portal.rule: Host(`portal.bettermail.io`)
traefik.http.routers.portal.entrypoints: websecure
traefik.http.services.portal.loadbalancer.server.port: '3000'
traefik.enable: 'true'
swarmpit.service.deployment.autoredeploy: 'true'
update_config:
delay: 60s
order: start-first
restart_policy:
condition: on-failure
window: 120s
max_attempts: 3
placement:
constraints:
- node.labels.db == 2
consumer:
image: wizewerx/bettermail_consumer:master
command:
- bundle
- exec
- sidekiq
environment:
RUN_SIDEKIQ_CRON: 'yes'
networks:
- default
configs:
-
source: betbeast
target: /app/.env
logging:
driver: json-file
options:
max-size: 10M
deploy:
labels:
swarmpit.service.deployment.autoredeploy: 'true'
update_config:
delay: 60s
order: start-first
restart_policy:
condition: on-failure
window: 120s
max_attempts: 3
placement:
constraints:
- node.labels.db == 2
proxy:
image: wizewerx/bettermail_proxy:master
command:
- bundle
- exec
- sidekiq
environment:
RUN_SIDEKIQ_CRON: 'yes'
networks:
- default
configs:
- source: betbeast
target: /app/.env
logging:
driver: json-file
options:
max-size: 10M
deploy:
labels:
swarmpit.service.deployment.autoredeploy: 'true'
update_config:
delay: 60s
order: start-first
restart_policy:
condition: on-failure
window: 120s
max_attempts: 3
placement:
constraints:
- node.labels.db == 2
notifications:
image: wizewerx/bettermail_notifications:master
command:
- bundle
- exec
- sidekiq
environment:
RUN_SIDEKIQ_CRON: 'yes'
networks:
- default
configs:
- source: betbeast
target: /app/.env
logging:
driver: json-file
options:
max-size: 10M
deploy:
labels:
swarmpit.service.deployment.autoredeploy: 'true'
update_config:
delay: 60s
order: start-first
restart_policy:
condition: on-failure
window: 120s
max_attempts: 3
placement:
constraints:
- node.labels.db == 2
db:
image: postgres:14.0-alpine
environment:
POSTGRES_DB: bettermail
POSTGRES_PASSWORD: bettermail
POSTGRES_USER: bettermail
volumes:
- bettermail_db_data:/var/lib/postgresql/data
networks:
- databases
- default
logging:
driver: json-file
deploy:
replicas: 0
restart_policy:
condition: on-failure
window: 120s
max_attempts: 3
placement:
constraints:
- node.labels.db == 2
db_backup:
image: tiredofit/db-backup:latest
environment:
COMPRESSION: GZ
CONTAINER_ENABLE_MONITORING: 'FALSE'
DB_CLEANUP_TIME: '10'
DB_DUMP_FREQ: '15'
DB_HOST: db
DB_NAME: bettermail
DB_PASS: bettermail
DB_TYPE: pgsql
DB_USER: bettermail
ENABLE_CHECKSUM: 'FALSE'
volumes:
- /mnt/s3_share/backups/databases:/backup
networks:
- default
logging:
driver: json-file
deploy:
restart_policy:
condition: on-failure
window: 120s
max_attempts: 3
rabbitmq:
image: rabbitmq:3.11-management-alpine
ports:
- "5672:5672"
- "15672:15672"
volumes:
- bettermail_rabbitmq:/data
networks:
- default
logging:
driver: json-file
deploy:
labels:
traefik.http.bettermail_rabbitmq.portal.tls: 'true'
traefik.http.routers.bettermail_rabbitmq.rule: Host(`queues.bettermail.io`)
traefik.http.routers.bettermail_rabbitmq.entrypoints: websecure
traefik.http.services.bettermail_rabbitmq.loadbalancer.server.port: '8080'
traefik.enable: 'true'
swarmpit.service.deployment.autoredeploy: 'true'
placement:
constraints:
- node.labels.db == 2
networks:
databases:
external: true
default:
driver: overlay
routable:
external: true
volumes:
betbeast_db_data:
betbeast_redis:
configs:
betbeast:
external: true