MongoDB on Docker Swarm

create the network:

docker network create --driver=overlay --subnet=10.0.3.0/24 mongodb
docker network create --driver=overlay --subnet=10.0.4.0/24 chat
docker network create --driver=overlay --subnet=10.0.5.0/24 logs

create the file mongodb-stack.yml, with content:

version: '3.3'

services:
  db:
    image: mongo:4.2
    volumes:
      - /containers/mongodb/:/data
    networks:
      - mongodb
      - chat
      - logs
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      labels:
        - traefik.enable=false

  web:
    image: mongo-express
    networks:
      - traefik
      - mongodb
    environment:
      ME_CONFIG_MONGODB_SERVER: db
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
	deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      labels:
        - traefik.enable=true
        - traefik.docker.network=traefik
        - traefik.constraint-label=traefik
        - traefik.http.routers.web-http.rule=Host(`adminer.krolaki.eu`)
        - traefik.http.routers.web-http.entrypoints=http
        - traefik.http.routers.web-http.middlewares=https-redirect
        - traefik.http.routers.web-https.rule=Host(`adminer.krolaki.eu`)
        - traefik.http.routers.web-https.entrypoints=https
        - traefik.http.routers.web-https.tls=true
        - traefik.http.services.web.loadbalancer.server.port=8081

networks:
  traefik:
    external: true
  mongodb:
    external: true
  chat:
    external: true
  logs:
    external: true

Leave a Reply

Your email address will not be published. Required fields are marked *