Как я могу запускать NodeJS в Docker с помощью MongoDB и RabbitMQ?

#node.js #mongodb #docker #rabbitmq

#node.js #mongodb #docker #rabbitmq

Вопрос:

Как я могу запустить NodeJS в Docker и подключить его к MongoDB и RabbitMQ? Нужно ли мне запускать его с docker-compose помощью?

А также мне нужно 2 среды

  1. Запустите приложение nodejs в среде разработки с nodemon помощью .
  2. Вторая среда — производственный эксперимент 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