node.js - MERN 堆栈无法将数据库连接到 Docker 容器
问题描述
美好的一天...关于使用 dockerfiles 和 docker-compose.yml 在 docker 上集成 MERN 堆栈 Web 应用程序。本地主机:8000 是我的后端,本地主机:3000 也是我的前端端口。我正在运行它在本地.. mongo 上的凭据是正确的.. 然后我将网络放在 docker-compose 和驱动程序中:“bridge”,在同一个网络上.. 在我构建容器并在 docker 上运行应用程序之后.. 错误如下所述:
[0] [http-server] listening: http://localhost:8000/
[1] ℹ 「wds」: Project is running at http://172.20.0.3/
[1] ℹ 「wds」: webpack output is served from
[1] ℹ 「wds」: Content not from webpack is served from /maint/client/public
[1] ℹ 「wds」: 404s will fallback to /
[1] Starting the development server...
[1]
[0] connect ECONNREFUSED 127.0.0.1:27017
[0] ERROR: Cannot connect to the database
[0] Exiting now...
[0] [nodemon] app crashed - waiting for file changes before starting...
我的码头文件:
# get the base node image
FROM node:10.15.2
# set the working dir for container
WORKDIR /maint
# copy the json file first
COPY ./package.json /maint
RUN "npm ci"
# copy other project files
COPY . .
# build the folder
CMD [ "npm", "run", "start" ]
在我的 docker-compose-local.yml 里面
version: '3'
services:
maint:
build:
context: .
dockerfile: Dockerfile.dev
command: npm run dev
container_name: mat-docker
volumes:
- ./:/maint
- /maint/node_modules
ports:
- "3000:3000"
depends_on:
- mongo
networks:
- app-network
mongo:
image: mongo
container_name: mat-dockerdb
ports:
- "27017:27017"
env_file: .env
environment:
- MONGO_HOST:$MONGO_HOST
- MONGO_DB:$MONGO_DB
- MONGO_USERNAME:"admin"
- MONGO_PASSWORD:"password123"
networks:
- app-network
networks:
app-network:
driver: bridge
解决方案
只需使用主机网络,您就可以更轻松地做到这一点。这样,您的主要服务和 mongo 实例使用与后端相同的主机网络。这是执行此操作的案卷撰写应用程序的示例
version: "2"
services:
app:
container_name: app
network_mode: host
restart: always
build: .
ports:
- "3000:3000”
depends_on:
- mongo
mongo:
container_name: mongo
image: mongo
network_mode: host
volumes:
- ./data:/data/db
ports:
- "27017:27017"
推荐阅读
- javascript - SyntaxError:JSON 输入 Discord.js v12+ 意外结束
- javascript - 访问脚本标签上的 EJS 变量
- javascript - 在 Photoshop 中获取艺术图层颜色属性
- java - 用于检查数组元素是否存在的Java方法
- javascript - Javascript 中的嵌套 SQL.promise() 回调
- jenkins - 詹金斯压缩文件
- mule - 如何在 Mule 4 中将大型 CSV 文件写入 SFTP
- go - Grpc Go Generated.pb.go 导入未格式化
- ruby-on-rails - 在 Rails 中-如何从 X 列和总和 Y 列中获取不同的行
- scope - blazor 包含代码块故障 @{} 错误然后 {} 范围错误