version: '3.7'
services:
  load-balancer:
    image: ecr.url/image.name:latest
    ports:
      - 80:80
      - 443:443
    networks:
      - api_network
    volumes:
      - /etc/letsencrypt:/etc/letsencrypt
    environment:
      WAIT_HOSTS: backend:8000
    deploy:
      mode: replicated
  backend:
    image: ecr.url/image.name:latest
    ports:
      - 8000:8000
    environment:
      WAIT_HOSTS: database_mongo:27017
    networks:
      - database_network
      - api_network
    configs:
      - source: env-production
        target: app/.env
    logging:
      driver: json-file
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 1
        delay: 10s
        failure_action: rollback
        order: start-first

networks:
  api_network:
  database_network:
    external: true
configs:
  env-production:
    external: true
