[英]mongodb with docker-compose [SocketTimeoutException]
[英]docker-compose mongodb fresh instance not working
嘗試通過以下方式使 docker-compose 上升:
version: '3.1'
services:
mongo:
image: mongo
container_name: mongo-db
networks:
- mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USER}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
ports:
- 27017:27017
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
mongo-express:
image: mongo-express:latest
container_name: mongo-express
restart: always
networks:
- mongo
depends_on:
- mongo
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_SERVER: mongo
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_MONGODB_ADMINUSERNAME: ${MONGO_ROOT_USER}
ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGO_ROOT_PASSWORD}
入口點js文件如下:
db.createUser(
{
user: "dba",
pwd: "dba",
roles: [
{
role: "readWrite",
db: "mydb"
}
]
}
);
變量在 .env 文件中定義如下:
MONGO_ROOT_USER=root
MONGO_ROOT_PASSWORD=root
MONGO_INITDB_DATABASE=mydb
MONGOEXPRESS_LOGIN=dev
MONGOEXPRESS_PASSWORD=dev
當我登錄到 mongo-express 時,我看不到由 mongo-init.js 創建的用戶或數據庫此外,如果我嘗試使用以下方式進行連接,我將無法登錄:
docker exec -it mongo-db mongo --username dba
但是,如果我使用以下內容,我可以連接,但在運行 show dbs 時仍然看不到 mydb:
docker exec -it mongo-db mongo --username root
這里發生了什么事?
提前致謝
我認為您需要將環境更改為:
MONGO_INITDB_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD
這些變量一起使用,創建一個新用戶並設置該用戶的密碼。 該用戶是在管理員身份驗證數據庫中創建的,並被賦予 root 角色,這是一個“超級用戶”角色。
見文檔
另一個注意事項:
如果您不使用 JavaScript 文件插入數據,則不會創建數據庫。
MONGO_INITDB_DATABASE
此變量允許您指定用於在 /docker-entrypoint-initdb.d/*.js 中創建腳本的數據庫名稱(請參閱下面的初始化新實例)。 MongoDB 基本上是為“首次使用創建”而設計的,因此如果您不使用 JavaScript 文件插入數據,則不會創建數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.