gpt4 book ai didi

mongodb - 我如何正确设置Keystone.js应用程序以使其在mongo的docker中运行?

转载 作者:行者123 更新时间:2023-12-02 21:14:28 26 4
gpt4 key购买 nike

我已经建立了可以在本地正常运行的应用程序。当我尝试在docker( docker-compose up )中运行它时,它似乎启动了,但随后引发了一条错误消息:

Creating mongodb ... done
Creating webcms ... done
Attaching to mongodb, webcms

...

Mongoose connection "error" event fired with:
MongoError: failed to connect to server [localhost:27017] on first connect

...

webcms exited with code 1

我已经读过 Keystone.js ,您需要在 .env 文件中配置Mongo位置,该文​​件具有:
MONGO_URI=mongodb://localhost:27017

这是我的Docker文件:
# Use node 9.4.0
FROM node:9.4.0

# Copy source code
COPY . /app

# Change working directory
WORKDIR /app

# Install dependencies
RUN npm install

# Expose API port to the outside
EXPOSE 3000

# Launch application
CMD ["node","keystone"]

...和我的docker-compose
version: "2"
services:
# NodeJS app
web:
container_name: webcms
build: .
ports:
- 3000:3000
depends_on:
- mongo

# MongoDB
mongo:
container_name: mongo
image: mongo
volumes:
- ./data:/data/db/mongo
ports:
- 27017:27017

当我运行 docker ps 时,它确认mongo已启动并在容器中运行...
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
f3e06e4a5cfe mongo "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:27017->27017/tcp mongodb

我或者缺少一些配置,或者配置不正确。有人可以告诉我那是什么吗?

任何帮助,将不胜感激。

谢谢!

最佳答案

它发送的主机错误,因此无法正常工作。
您的容器不了解localhost:27017是什么,因为它是您的计算机地址,而不是其容器地址。

重要的是要了解每个服务都有自己的具有不同IP的容器。
docker 的美丽之处在于,您无需知道您的容器地址!足以知道您的服务名称:

version: "2"

volumes:
db-data:
driver: local

services:
web:
build: .
ports:
- 3000:3000
depends_on:
- mongo
environment:
- MONGO_URI=mongodb://mongo:27017

mongo:
image: mongo
volumes:
- "db-data:/data/db/mongo"
ports:
- 27017:27017

只需运行 docker-compose up就可以了

关于mongodb - 我如何正确设置Keystone.js应用程序以使其在mongo的docker中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com