Я пытаюсь получить доступ к базе данных Монго из другого контейнера, используя 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. Но более общий сценарий будет:
Как Контейнер C может получить доступ к базе данных через псевдоним или IP-адрес в Контейнере A ??
Спасибо!