[英]Waiting for mongodb in docker-compose does not work
我正在使用 docker-compose、nodejs、mongodb。
當我運行docker-compose up
,nodejs 在 mongo 完全運行之前運行,這導致了問題。
我寫了以下Dockerfile
和docker-compose.yml
。
FROM node:12
RUN mkdir /usr/app
WORKDIR /usr/app
COPY . /usr/app
RUN npm install
EXPOSE 8000
## Add the wait script to the image
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.8.0/wait /wait
RUN chmod +x /wait
CMD /wait && npm run prod
version: "3"
services:
node:
container_name: node
links:
- mongo
depends_on:
- mongo
env_file: .env
build:
context: .
dockerfile: Dockerfile
ports:
- "80:8000"
restart: unless-stopped
mongo:
container_name: mongo
image: mongo:4.0-xenial
ports:
- "27017:27017"
restart: unless-stopped
volumes:
- mongodb:/data/db
volumes:
mongodb:
我也 wick docker-compose-wait 告訴我以下回聲:
node | [INFO wait] Host mongo:27017 is now available!
node | [INFO wait] --------------------------------------------------------
node | [INFO wait] docker-compose-wait - Everything's fine, the application can now start!
node | [INFO wait] --------------------------------------------------------
之后 nodejs 運行,但最終它返回斷開連接。
僅當 mongodb 為localhost
時才會出現此問題。
當我進入正常運行的雲的DB URL時,它工作正常。
我究竟做錯了什么?
正如NobbyNobbs在評論中提到的,您應該使用服務名稱或容器名稱而不是localhost
來連接到您的mongodb
容器。
在您的情況下, node
容器中的localhost:27017
表示node:27017
。 因此,由於mongodb
沒有在node
容器內運行,並且端口27017
沒有分配給node
容器中的任何服務,那么你會得到錯誤。
您應該將數據庫連接信息更改為mongo:27017
才能工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.