-1 mongodb docker docker-compose keystonejs
我已经构建了在本地运行良好的应用程序。当我尝试在 docker ( docker-compose up )中运行它时,它似乎启动了,但随后抛出了一条错误消息:
\n\nCreating mongodb ... done\nCreating webcms ... done\nAttaching to mongodb, webcms\n\n...\n\nMongoose connection "error" event fired with:\n MongoError: failed to connect to server [localhost:27017] on first connect\n\n...\n\nwebcms exited with code 1\nRun Code Online (Sandbox Code Playgroud)\n\n我读到,使用Keystone.js,您需要在.env文件中配置 Mongo 位置,我有:
\n\nMONGO_URI=mongodb://localhost:27017\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的 Docker 文件:
\n\n# Use node 9.4.0\nFROM node:9.4.0\n\n# Copy source code\nCOPY . /app\n\n# Change working directory\nWORKDIR /app\n\n# Install dependencies\nRUN npm install\n\n# Expose API port to the outside\nEXPOSE 3000\n\n# Launch application\nCMD ["node","keystone"]\nRun Code Online (Sandbox Code Playgroud)\n\n...和我的 docker-compose
\n\nversion: "2"\nservices:\n # NodeJS app\n web:\n container_name: webcms\n build: .\n ports:\n - 3000:3000\n depends_on:\n - mongo\n\n # MongoDB\n mongo:\n container_name: mongo\n image: mongo\n volumes:\n - ./data:/data/db/mongo\n ports:\n - 27017:27017\nRun Code Online (Sandbox Code Playgroud)\n\n当我运行docker ps时,它确认 mongo 已启动并在容器中运行......
\n\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nf3e06e4a5cfe mongo "docker-entrypoint.s\xe2\x80\xa6" 2 hours ago Up 2 hours 0.0.0.0:27017->27017/tcp mongodb\nRun Code Online (Sandbox Code Playgroud)\n\n我要么缺少一些配置,要么配置不正确。有人能告诉我那是什么吗?
\n\n任何帮助,将不胜感激。
\n\n谢谢!
\n它无法正常工作,因为您发送了错误的主机。您的容器不知道是什么,localhost:27017因为它是您的计算机地址而不是其容器地址。
重要的是要了解每个服务都有自己的具有不同 IP 的容器。docker-compose 的美妙之处在于您不需要知道您的容器地址!足以知道您的服务名称:
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
Run Code Online (Sandbox Code Playgroud)
只要跑docker-compose up就可以了
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |