You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker Compose Secrets无法认证MongoDB的问题求助

无法通过Docker Compose Secrets连接MongoDB的排查与解决

我配置了Docker Compose的Secrets功能管理MongoDB根凭证,但无法使用凭证文件中的账号密码连接MongoDB。

我的docker-compose.yml配置

version: '3.4'
services:
  mongo-container:
    network_mode: host
    image: mongo:6.0.5
    environment:
      MONGO_INITDB_ROOT_PASSWORD_FILE: /run/secrets/mongodb_root_password
      MONGO_INITDB_ROOT_USERNAME_FILE: /run/secrets/mongodb_root_username
    secrets:
      - mongodb_root_password
      - mongodb_root_username
    volumes:
      - "/storage/docker/mongodb:/data/db"
    command: mongod
secrets:
  mongodb_root_password:
    file: /home/mongodb/.mongodb_root_password
  mongodb_root_username:
    file: /home/mongodb/.mongodb_root_username

操作步骤与现象

在docker-compose.yml所在目录执行docker-compose up -d启动容器:

  • 硬编码凭证的连接字符串可正常连接:mongodb://admin:pass@host:27017/?authMechanism=DEFAULT
  • 使用Secrets文件中<username>和<password>的连接字符串无法连接:mongodb://<username>:<password>@host:27017/?authMechanism=DEFAULT

Secrets文件内容

$ cat /home/mongodb/.mongodb_root_password
<password>
$ cat /home/mongodb/.mongodb_root_username
<username>

排查与解决方法

  • 清理凭证文件的换行符:绝大多数情况是凭证文件末尾的换行符被MongoDB当成了密码/用户名的一部分。用cat -A查看文件,若末尾有$符号说明存在换行符。执行以下命令去除:
    tr -d '\n' < /home/mongodb/.mongodb_root_password > temp && mv temp /home/mongodb/.mongodb_root_password
    tr -d '\n' < /home/mongodb/.mongodb_root_username > temp && mv temp /home/mongodb/.mongodb_root_username
    
  • 验证容器内的Secrets内容:进入容器检查Secrets文件的实际内容,确认无多余字符:
    docker exec -it mongo-container cat /run/secrets/mongodb_root_password
    docker exec -it mongo-container cat /run/secrets/mongodb_root_username
    
  • 修正文件权限:确保Docker能读取Secrets文件,设置正确权限:
    chmod 600 /home/mongodb/.mongodb_root_password /home/mongodb/.mongodb_root_username
    
  • 检查MongoDB启动日志:查看容器日志排查初始化错误:
    docker logs mongo-container
    
  • 重新初始化数据库:如果之前用硬编码密码启动过容器,本地数据卷已存在旧用户数据。需清理后重新初始化:
    docker-compose down
    rm -rf /storage/docker/mongodb
    docker-compose up -d
    

内容的提问来源于stack exchange,提问作者Harry Stuart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:43:08