【发布时间】:2020-02-24 19:43:24
【问题描述】:
我有两个 node.js 应用程序使用相同的数据库并在本地运行它们工作正常,但我想在 docker 容器中将它们作为服务运行。如果我在 docker 中运行任何一个应用程序和数据库,它工作正常,但是当我尝试运行这两个节点应用程序时,我遇到了问题。
我的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 服务。
我做错了什么以及如何解决它以便我可以访问这两个服务
提前致谢
【问题讨论】:
标签: node.js docker docker-compose dockerfile