Доступ к сети докеров из субконтейнера - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь получить доступ к базе данных Монго из другого контейнера, используя docker compose. Это мой текущий дистрибутив контейнера

Монго БД

Я создал контейнер mongo db, с которого начинаю

"mongod --bind_ip 127.0.0.1,172.16.0.2"

AWS Sam Cli

Обычно вы можете установить sam-cli на свой компьютер, но я пытаюсь докертизировать это, поэтому aws_sam_cli создает новый докер-контейнер для запуска ваших лямбда-функций. Таким образом, мы можем сказать, что мой контейнер AWS выполняет «субконтейнер», когда я вызываю свою лямбда-функцию.

Это мой docker-compose файл

            version: '3.3'
            services:
            aws:
                container_name: 'aws'
                build: './aws'
                command: sam local start-api --docker-volume-basedir /Users/samuelnavarro/go/src/server --host 0.0.0.0 --docker-network mongo_net
                ports:
                - '3000:3000'
                volumes:
                - /var/run/docker.sock:/var/run/docker.sock
                - ./server:/var/opt
                networks:
                mongo_net:
                depends_on:
                - server
            mongo:
                image: 'mongo:3.6.7'
                container_name: 'mongo'
                volumes:
                - ./data:/data/db
                ports:
                - '27017:27017'
                networks:
                mongo_net:
                    ipv4_address: 172.16.0.2
                command: mongod --bind_ip 127.0.0.1,172.16.0.2

            networks:
            mongo_net:
                driver: bridge
                ipam:
                config:
                    - subnet: 172.16.0.0/24

Текущее тестирование

На самые очевидные вопросы уже даны ответы,

Из моего контейнера aws я захожу и загружаю клиент mongo, затем могу сделать

mongo --host mongo --port 27017

Это позволяет мне подключаться к серверу Монго. Итак, я знаю, что сервер работает и получает удаленные соединения.

Проблема в том, что когда я вызываю свою лямбда-функцию, она запускает новый контейнер внутри моего контейнера aws. При попытке установить соединение между контейнером Монго происходит сбой. (Он просто ожидает тайм-ауты клиента Untile, у Mongo нет тайм-аута), я проверил проверку контейнера и оказалось, что он не распознает сеть докера: mongo_net.

Я знаю, что этот вопрос очень специфичен для AWS sam cli. Но более общий сценарий будет:

  • Контейнер A (DB)

  • Контейнер B (работает больше контейнеров)

    • Контейнер C (внутри контейнера B)

Как Контейнер C может получить доступ к базе данных через псевдоним или IP-адрес в Контейнере A ??

Спасибо!

...