У меня есть два 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
И dockerfile
для службы admin
содержит это
FROM node:8
WORKDIR /usr/src/admin
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
И dockerfile
для службы user
содержит это
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
My проблема в том, что мне кажется, что я могу получить доступ только к последней службе в файле docker-compose.yml
, в данном случае - к службе user
, но не к службе администратора.
Иногда я говорю, что express прослушивает оба порты, но я могу получить доступ только к службе user
Я попытался поменять службы, и тогда только служба admin
доступна.
Что я сделал не так и как я могу это исправить это так, чтобы я мог получить доступ к обеим службам
Заранее спасибо