我是學習 docker 的新手,在這里學習。這是我的 compose.yaml 檔案,其中包含 mongo 和 mongo-express 最新版本用例。mongo-express 沒有連接到 mongodb,嘗試了 mongo-express 中的重新啟動功能,它繼續重新啟動 mongo-express 我就足夠了,它沒有與 mongodb 連接。我試過給予網路并沒有改變任何東西。
version: "3"
services:
mongodb:
image: mongo
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=password
# networks:
# - mongo-network
mongo-express:
image: mongo-express
# restart: on-failure
ports:
- "8081:8081"
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=password
- ME_CONFIG_MONGODB_ADMINSERVER=mongodb
- ME_CONFIG_MONGODB_PORT=27017
# networks:
# - mongo-network
depends_on:
- mongodb
這是我在命令提示符下遇到的錯誤
uj5u.com熱心網友回復:
根據檔案,服務器環境變數不是 ME_CONFIG_MONGODB_ADMINSERVER 而是 ME_CONFIG_MONGODB_SERVER: https ://hub.docker.com/_/mongo-express
您還需要為 mongodb 添加健康檢查并使 mongo-express 依賴于它,因為節點在第一次連接失敗后以退出代碼 0 退出,如日志中所述。如果它將以非零退出代碼退出,只要它沒有失敗,docker 就會嘗試重新啟動容器。它在日志中說,這將是未來的方式,但現在你需要健康檢查。
(節點:7)[DEP0018] DeprecationWarning:未處理的承諾拒絕已棄用。將來,未處理的承諾拒絕將以非零退出代碼終止 Node.js 行程。
所以這個撰寫檔案有效:
version: "3"
services:
mongodb:
image: mongo
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=password
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
interval: 10s
timeout: 10s
retries: 5
start_period: 10s
mongo-express:
image: mongo-express
# restart: on-failure
ports:
- "8081:8081"
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=password
- ME_CONFIG_MONGODB_SERVER=mongodb
- ME_CONFIG_MONGODB_PORT=27017
depends_on:
mongodb:
condition: service_healthy
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534130.html
