gpt4 book ai didi

node.js - 如何在 Docker 中运行两个 Node.js 应用程序和 mysql

转载 作者:太空宇宙 更新时间:2023-11-03 23:11:45 27 4
gpt4 key购买 nike

我有两个使用相同数据库的 Node.js 应用程序,并且在本地运行它们工作正常,但我想将它们作为 Docker 容器中的服务运行。如果我在 docker 中运行任一应用程序和数据库,它工作正常,但是当我尝试运行这两个 Node 应用程序时,我会遇到问题。

我的docker-compose.yml文件包含以下内容

version: '3'

services:
db:
build: ./db
environment:
MYSQL_DATABASE: mydb
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: mysql
MYSQL_PASSWORD: password
DATABASE_HOST: db
admin:
build: ./admin
environment:
DATABASE_HOST: db
MYSQL_PORT: 3306
MYSQL_DATABASE: mydb
MYSQL_USER: mysql
MYSQL_PASSWORD: password
user:
build: ./user
environment:
DATABASE_HOST: db
MYSQL_PORT: 3306
MYSQL_DATABASE: mydb
MYSQL_USER: mysql
MYSQL_PASSWORD: password

ports:
- "3000:3000"
- "3001:3001"
depends_on:
- db
restart: on-failure

admin 服务的 dockerfile 包含此

FROM node:8

WORKDIR /usr/src/admin

COPY package*.json ./

RUN npm install

COPY . .

CMD ["npm", "start"]

user 服务的 dockerfile 包含此

FROM node:8

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["npm", "start"]

我的问题是,我似乎只能访问 docker-compose.yml 文件中的最后一个服务,在本例中是 user 服务,但不能访问管理服务。

我有时会说express正在监听两个端口,但我只能访问服务user

我尝试交换服务,然后只能访问 admin 服务。

我做错了什么以及如何修复它以便我可以访问这两种服务

提前致谢

最佳答案

在用户容器中,您已公开端口:

    ports:
- "3000:3000"
- "3001:3001"

如果您还想公开其他容器的端口,请向其他容器添加类似的部分:

  db:
...snip...
ports:
- "3306:3306"

关于node.js - 如何在 Docker 中运行两个 Node.js 应用程序和 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382867/

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