【发布时间】:2019-09-06 08:48:48
【问题描述】:
所以,目前我有一个 docker-compose.yml 文件,其中包含以下内容:
version: "2"
services:
pastime:
build:
context: ./pastime
dockerfile: ./Dockerfile
volumes:
- ./pastime:/usr/src/app
- /usr/src/app/node_modules
ports:
- "3000:3000"
depends_on:
- mongo
environment:
- PORT=3000
- DATABASE_USER=pastime
- DATABASE_URL=mongo:27017
- DATABASE_PASS=pastime123
- DATABASE_NAME=pastime
command: npm run start:dev
mongo:
image: mongo:latest
restart: always
ports:
- "27017:27017"
environment:
- MONGO_INITDB_DATABASE=pastime
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=root_password
volumes:
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
还有我的init-mongo.js 文件有:
db.createUser({
user: 'pastime',
pwd: 'pastime123',
roles: [
{
role: 'readWrite',
db: 'pastime'
}
]
})
我不知道为什么,但是我每次执行docker-compose logs -f mongo 时得到的输出是:
SASL SCRAM-SHA-1 authentication failed for pastime on admin from client 172.19.0.3:55568 ; UserNotFound: Could not find user "pastime"...
我怀疑初始化脚本没有运行,因为我在我的 mongo 容器中没有看到关于它的各种日志。
跟随了几个例子,主要是通过这个: How to create a DB for MongoDB container on start up?
【问题讨论】:
-
你能在启动时发布容器日志吗?请使用
docker-compose down; docker-compose up -d; docker-compose logs -f。快速浏览一下入口点github.com/docker-library/mongo/blob/master/4.2/…,看起来你应该可以工作。我可以看到您没有为 mongo 安装数据卷,但是您是否有机会在最初启动容器后添加init-mongo.js文件而不破坏和重新创建它?
标签: mongodb docker docker-compose