Неправильная аутентификация с помощью экземпляра Docker Mongo

#mongodb #docker #docker-compose #mongo-express

#mongodb #docker #docker-compose #mongo-express

Вопрос:

Я пытаюсь правильно подключиться к экземпляру mongo, запускаемому docker. У меня есть следующий config.yml

 version: "3"
services:
  mongo-server:
    container_name: mongo-server
    image: mongo:4.4.2
    restart: always
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
    volumes:
      - mongo-data:/data/db

  app:
    container_name: app
    image: "node:12"
    working_dir: /home/node/app
    environment:
      - NODE_ENV=production
    volumes:
      - ./:/home/node/app
    ports:
      - "8888:8888"
    command: "npm run start"
    depends_on:
      - mongo-server

  mongo-express:
    container_name: mongo-admin
    image: mongo-express:0.54
    restart: always
    ports:
      - "8081:8081"
    environment:
      - ME_CONFIG_MONGODB_SERVER=mongo-server
      - ME_CONFIG_MONGODB_PORT=27017
      - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
      - ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USER}
      - ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD}
      - ME_CONFIG_BASICAUTH_USERNAME=${MONGO_EXPRESS_LOGIN}
      - ME_CONFIG_BASICAUTH_PASSWORD=${MONGO_EXPRESS_PASSWORD}
    depends_on:
      - mongo-server
volumes:
  mongo-data:
 

Я проверил, что переменные .env передаются правильно с помощью конфигурации docker-compose

Оттуда я запускаю образы docker, запустив: docker-compose up -d

Я узнал, как удалить тома, что было первой серьезной проблемой. Теперь следующим шагом будет подключение к базе данных в моем приложении. Предоставленные имя пользователя и пароль не совсем работают.

Приложение пытается подключиться к следующей строке с помощью mongoose connect:

 `mongodb://${process.env.MONGO_ROOT_USER}:${process.env.MONGO_ROOT_PASSWORD}@mongo:27017/app`
 

Но это не работает, и я не совсем уверен, почему. Если у кого-нибудь есть представление о том, каким он должен быть, пожалуйста, дайте мне знать

Комментарии:

1. mongodb://.....@/!mongo/!:27017/app . => Из того, что я вижу в вашем файле compose, ваше имя службы mongo-server , а не mongo . В журнале вашего приложения, который вы не показывали, вы, вероятно Name or service not known , увидите ошибку или эквивалент. Но это чистая догадка, потому что вы явно не предоставили достаточно отладочной информации that isn't working .

2. Привет, @Zeitounator, я немного новичок в docker. Что я мог бы предоставить, чтобы упростить задачу. Я попытался использовать имя службы с той же аутентификацией, и я getaddrinfo ENOTFOUND undefined вернулся с сервера. Это `/!`, которые вы разместили вокруг имени службы только для того, чтобы я увидел, на какой mongo вы ссылаетесь?