![](/img/trans.png)
[英]Docker docker-entrypoint-initdb.d/ scripts with Mongodb aren't working
[英]Docker MongoDB image doesn't run scripts in docker-entrypoint-initdb.d when entrypoint is supplied
我想將 Mongo 與事務一起使用,因此我嘗試使用 docker 設置一個副本集(僅包含一個 Mongo 節點)。
我想在數據庫啟動后自動運行rs.initiate()
。 為此,我在 docker-entrypoint-initdb.d 中使用了一個腳本。
我還需要使用 replSet 選項啟動 mongo 節點,因此我更新了入口點值。 當入口點是我的新命令時,我在docker-entrypoint-initdb.d
中的腳本不會運行。 當我注釋掉我的新入口點時,腳本會運行。
我知道我可以將我的docker-compose up
命令和一個docker-exec... 'rs.initiate()'
命令包裝在一個腳本中並調用它而不是docker-compose
,但這感覺就像一個 hack。
如何使用 replSet 創建 Mongo 節點並運行rs.initiate()
?
docker-compose.yaml
:
version: "3"
services:
order-db:
image: mongo:latest
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: mongo
# entrypoint: ["mongod", "--bind_ip_all", "--replSet", "order"]
volumes:
- ./docker-entrypoint-initdb.d/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
- ./docker-entrypoint-initdb.d/run.sh:/docker-entrypoint-initdb.d/run.sh:ro
- ./docker-entrypoint-initdb.d/arun.sh:/docker-entrypoint-initdb.d/arun.sh:ro
docker-entrypoint-initdb.d/mongo-init.js
:
rs.initiate();
db.createCollection("just-testing-to-see-if-this-file-runs");
docker-entrypoint-initdb.d/a-run.sh
:
echo "running aaaaaaaaaaaaaaaaaaaaaaaaaaa"
docker-entrypoint-initdb.d/run.sh
:
echo "running!!!!!!!!"
刪除entrypoint
點並將command
設置為["--bind_ip_all", "--replSet", "order"]
您正在覆蓋mongo
圖像的入口點。 我不確定您期望這些啟動腳本如何運行,但它是嵌入到 mongo 圖像中的入口點文件的一部分。 通過定義您自己的入口點,您可以防止容器執行現有入口點,這就是不運行這些初始化腳本的原因。 相反,您可以將額外的mongod
arguments 定義為command
的一部分,然后將其傳遞到入口點。 然后入口點會將它們傳遞給 mongod 調用。 您可以在此處和此處看到入口點如何處理額外的 arguments 並將它們傳遞給mongod
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.