DEVOPS: Экспресс и Монго Docker Контейнерная Сеть - PullRequest
0 голосов
/ 18 сентября 2018

Я писал это удивительное Приложение Express & MongoDB, просто для удовольствия, 1 : https://github.com/mwaz/oober-bck, все работает в автономном режиме, у меня есть разные конфигурации БД для разных сред приложений, например, для разработки, подготовки, тестирования и производства, в реальном смысле в каждой среде, БД отличается, и учитывая, что MongoDB является гибким, у нас нет проблем с этим.

Поскольку приложение работает нормально, устанавливая переменную $ NODE_ENV в среду приложения, требуемую на моем локальном компьютере, все должно работать нормально, когда приложение докеризуется, однако это не так, в какой-то момент происходит сбой mongoDB и он не подключаться к приложению, вот пример журнала Docker Log, when running docker-compose up

Файл Docker выглядит следующим образом:

FROM node:7
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD node app.js
EXPOSE 3003

Файл docker-compose.yml

version: "2"
services:
  app:
    container_name: oober
    restart: always
    build: .
    ports:
      - "3003:3003"
    environment:
      - NODE_ENV=STAGING
    links:
      - mongo
  mongo:
    container_name: mongo
    image: mongo
    ports:
      - "27017:27017"

Образ докера можно найти на dockerhub по этой ссылке

docker pull sparatan/oober_app

1 Ответ

0 голосов
/ 18 сентября 2018

Ваша конфигурация промежуточной базы данных по умолчанию - DATABASE: "mongodb://localhost:27017/staging_ooberdb", как показано в вашем файле config.js .

В среде докера, когда вы используете "localhost", ссылается насам контейнер (в данном случае ваш «oober» контейнер.

Вместо этого вам нужно использовать имя контейнера mongodb, например DATABASE: "mongodb://mongo:27017/staging_ooberdb", в STAGING-части вашего файла config.js.

Как примечание, вы, вероятно, не хотите выставлять порт mongodb в производственной среде.

...