我构建了我的应用程序,在本地运行良好。当我尝试在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"]
......和我的码头组成
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。码头工人的美丽 - 你不需要知道你的集装箱地址!足以知道您的服务名称:
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
就可以了