version: '3.7'
services:
  mongo:
    image: mongo:4.0
    volumes:
      - mongo-data:/data
    networks:
      - network
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_PASSWORD_FILE=/run/secrets/MONGO_DB_PASSWORD
      - MONGO_INITDB_ROOT_USERNAME_FILE=/run/secrets/MONGO_DB_USERNAME
    configs:
      - mongo-healthcheck
    secrets:
      - MONGO_DB_USERNAME
      - MONGO_DB_PASSWORD
    healthcheck:
      test: ['CMD', 'bash', '/mongo-healthcheck']
      interval: 1m
      timeout: 10s
      retries: 3
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.labels.node.propose == database
      restart_policy:
        condition: on-failure

configs:
  mongo-healthcheck:
    file: mongo-healthcheck

networks:
  network:
    driver: overlay

volumes:
  mongo-data:
    driver: local

secrets:
  MONGO_DB_USERNAME:
    external: true
  MONGO_DB_PASSWORD:
    external: true
