我正在使用docker-compose在我的机器上创建mongo:latest容器。
这是我的docker-compose。
version: '3.6'
services:
backend:
image: backend:1.0.0
container_name: backend
ports:
- '5000:5000'
links:
- mongodb
environment:
NODE_ENV: PRODUCTION
API_PORT: 5000
MONGO_USERNAME: root
MONGO_PASSWORD: rootPassXXX
MONGO_HOST: mongodb
MONGO_PORT: 27017
MONGO_DATABASE: automatic
JWT_TOKEN: Auto
scheduler:
image: scheduler:1.0.0
container_name: scheduler
links:
- mongodb
environment:
NODE_ENV: PRODUCTION
API_PORT: 5000
MONGO_USERNAME: root
MONGO_PASSWORD: rootPassXXX
MONGO_HOST: mongodb
MONGO_PORT: 27017
MONGO_DATABASE: automatic
mongodb:
image: mongo
container_name: mongodb
expose:
- 27017
ports:
- '27017:27017'
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=rootPassXXX
volumes:
- ./conf/mongodb:/data/db
volumes:
autoc:
external: true
networks:
default:
external:
name: automatic
创建这些容器后,我收到来自它们的错误:MongoServerError: Authentication failed.
这是应用程序尝试连接的URI:mongodb://root:rootPassXXX@mongodb:27017/matiautomai
.
在尝试调查发生了什么的时候,我尝试登录到同一个mongo容器,该容器使用用户名和密码变量初始化,而不使用凭据:mongodb://mongodb:27017/automatic
,应用程序设法连接到它。
我已经检查了Docker中心内的文档,似乎我以正确的方式使用了环境变量。
我错过了什么?
1条答案
按热度按时间xhv8bpkk1#
看到你的有益评论后,我找到了这个问题的解决方案。
我需要初始化一个一次性码头组成与初始脚本,位于里面。
docker-compose.yaml
:这是位于
./docker-entrypoint-initdb.d/mongo-init.js
中的脚本:之后,您将能够使用在
.js
文件中设置的凭据连接到mongo。