Docker容器网络中MongoDB容器名非mongo时如何连接Mongo-Express?
问题原因
你所有docker run命令中-e参数后携带的环境变量名称前错误添加了--前缀,这导致你自定义的环境变量根本没有被正确传入容器内部,Mongo-Express始终使用默认配置的MongoDB服务器地址mongo发起连接:
- 场景1中你把MongoDB容器名设为
mongo,刚好匹配默认配置,所以歪打正着可以正常运行 - 场景2中MongoDB容器名改为
mymongo,和默认配置的地址不匹配,自然连接失败退出。你可以从报错日志里明确看到,Mongo-Express尝试连接的地址是mongo:27017,而非你以为已经设置的mymongo:27017,就是参数未生效的直接证明。
修复方案
把两个容器启动命令里所有-e后面的--前缀都删掉即可,正确的启动命令如下:
启动MongoDB容器
docker run -d -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --name mymongo --net testMongoNw mongo
启动Mongo-Express容器
docker run -d -p 8090:8081 -e ME_CONFIG_MONGODB_ADMINUSERNAME=admin -e ME_CONFIG_MONGODB_ADMINPASSWORD=password -e ME_CONFIG_MONGODB_SERVER=mymongo --name myMongoExpress --net testMongoNw mongo-express
内容的提问来源于stack exchange,提问作者rbewoor
相关产品推荐
相关产品推荐

