#node.js #mongodb #docker #rabbitmq
#node.js #mongodb #docker #rabbitmq
Вопрос:
Как я могу запустить NodeJS в Docker и подключить его к MongoDB и RabbitMQ? Нужно ли мне запускать его с docker-compose
помощью?
А также мне нужно 2 среды
- Запустите приложение nodejs в среде разработки с
nodemon
помощью . - Вторая среда — производственный эксперимент
node app.js
Я нашел этот docker-compose
yml, но не могу понять, как подключить его из nodejs
services:
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: rabbitmq
environment:
RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE}
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
Комментарии:
1. Я бы рекомендовал ознакомиться с Networking в Compose , даже если вы не используете Compose; в нем есть довольно понятное описание общей сетевой среды и способов подключения между контейнерами. Для простого Docker есть пошаговое руководство по использованию пользовательских мостовых сетей , но оно не очень концептуальное и включает в себя множество низкоуровневых диагностик, которые обычно не нужны.
Ответ №1:
Нет, вам не нужно запускать его docker-compose
.
Я бы рекомендовал создать следующие файлы:
- Dockerfile — сборка рабочего образа
- Dockerfile.dev — сборка образа разработки
Файл Dockerfile.разработка будет выглядеть примерно так:
FROM node:10-alpine
ENV PORT 8080
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install -g nodemon
RUN npm install
ENTRYPOINT ["nodemon", "/usr/src/app/server.js"]
Команда для создания образа: docker build . -t node-app -f Dockerfile.dev
Команда для запуска образа: docker run --rm -it -p 8080:8080 --network my-node-net -v "${PWD}:/usr/src/app" node-app
Посмотрите на этот пример, который я видел: https://github.com/kelda/node-todo
Вам также необходимо реализовать клиентские подключения rmq и mongo и запускать официальные изображения в той же сети, что и приложение узла
Все параметры компоновки могут быть переведены в команды запуска docker