【问题标题】:how to config mongodb behind traefik in docker-compose.yml in docker swarm mode?如何在 docker swarm 模式下在 docker-compose.yml 中在 traefik 后面配置 mongodb?
【发布时间】:2021-01-04 15:18:35
【问题描述】:
services:
    db:
        image: mongo:4.4-bionic
        logging: *logging
        environment:
            - MONGO_INITDB_ROOT_USERNAME=username
            - MONGO_INITDB_ROOT_PASSWORD=password
        command: mongod --replSet "rs0" --bind_ip_all --port 27017
        deploy:
            labels:
                - traefik.tcp.routers.db-1.entrypoints=https
                - traefik.tcp.routers.db-1.rule=HostSNI(`example.com`)
                - traefik.tcp.routers.db-1.tls=true
                - traefik.tcp.routers.db-1.tls.certresolver=letsencrypt
                - traefik.tcp.routers.db-1.tls.domains[0].main=example.com
                - traefik.tcp.services.db-1.loadbalancer.server.port=27017
        volumes:
            - db:/data
        networks:
            - main

以上是我整个配置的一部分。我无法通过

访问数据库
mongo -u username -p password --host example.com --port 443

我不知道出了什么问题...它暂停

connecting to: mongodb://example.com:443/?compressors=disabled&gssapiServiceName=mongodb

【问题讨论】:

    标签: mongodb docker-compose docker-swarm traefik


    【解决方案1】:

    Traefik 的高层次需求

    1. 创建入口点 TCP 端口 27017 --entrypoints.mongo.address=:27017
    2. 导出您的端口27017,以便您的客户端可以连接到 Traefik
    3. 告诉您的 Mongo 容器是一个带有路由器的 TCP 服务并启用它。
    4. 检查您的 Traefik 仪表板以获取新的 TCP 服务

    在您的 traefik 容器上公开端口 27017 并添加入口点 `--entrypoints.mongo.address=:27017' 后尝试此操作

    db:
        image: mongo:4.4-bionic
        logging: *logging
        environment:
            - MONGO_INITDB_ROOT_USERNAME=username
            - MONGO_INITDB_ROOT_PASSWORD=password
        command: mongod --replSet "rs0" --bind_ip_all --port 27017
        deploy:
            labels:
                - traefik.enable=true
                - traefik.tcp.routers.db-1.entrypoints=mongo
                - traefik.tcp.routers.db-1.service=mongo
                - traefik.tcp.routers.db-1.rule=HostSNI(`example.com`)
                - traefik.tcp.routers.db-1.tls=true
                - traefik.tcp.routers.db-1.tls.certresolver=letsencrypt
                - traefik.tcp.routers.db-1.tls.domains[0].main=example.com
                - traefik.tcp.services.db-1.loadbalancer.server.port=27017
        volumes:
            - db:/data
        networks:
            - main
    

    附言。您可能想更改端口并考虑如何限制对您的数据库的外部访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多