@historydev
Острая аллергия на анимешников

Как подключиться к mongodb из другого контейнера?

В гугле пишут что нужно использовать имя контейнера, я начал реализацию через аргументы командной строки но застрял, т.к. их нужно получать в докер файле. Следом я нашёл всякие правки хоста на 0.0.0.0, 127.0.0.1, разницы нет, это всё localhost. Дальше я нашёл интересный вариант с docker-compose но я только докер щупать начал, а тут мне нате, погуглил немного, сил уже не остаётся compose ковырять.

У меня контейнер где я запускаю nodejs сервер + статику на двух портах, возможно стоило бы поднять ubuntu и всё это там развернуть, но для такой задачи это перебор я считаю.
Второй контейнер docker pull mongo.

ошибка
/usr/src/app/node_modules/mongodb/lib/sdam/topology.js:285
[0] const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${serverSelectionTimeoutMS} ms`, this.description);
[0] ^
[0]
[0] MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
[0] at Timeout._onTimeout (/usr/src/app/node_modules/mongodb/lib/sdam/topology.js:285:38)
[0] at listOnTimeout (node:internal/timers:559:17)
[0] at processTimers (node:internal/timers:502:7) {
[0] reason: TopologyDescription {
[0] type: 'Unknown',
[0] heartbeatFrequencyMS: 10000,
[0] localThresholdMS: 15,
[0] setName: null,
[0] maxElectionId: null,
[0] maxSetVersion: null,
[0] commonWireVersion: 0,
[0] logicalSessionTimeoutMinutes: null
[0] },
[0] code: undefined,
[0] [Symbol(errorLabels)]: Set(0) {}
[0] }


Запускаю вот так:

docker run -p 27017:27017 -it 0850fead9327 --noauth

docker run -p 4200:4200 -it d4c42b7d1910

А, ещё нашёл флаг --link но он устаревший.

Как правильно это делать?
  • Вопрос задан
  • 557 просмотров
Пригласить эксперта
Ответы на вопрос 2
@tuwkan
Обернуть оба контейнера в compose и там уже по имени контейнера обращаться. Либо сделать expose портов у моего, но 1 вариант предпочтительней
Ответ написан
akelsey
@akelsey
Создать общую сеть, запустить контейнеры в этой сети:
docker network create commonnet
docker run --rm --name nginx1 -d --network commonnet nginx
docker run --rm --name nginx2 -d --network commonnet nginx

далее
docker exec -it nginx1 bash
apt update
apt install iputils-ping
ping nginx2
PING nginx2 (10.31.3.3) 56(84) bytes of data.
64 bytes from nginx2.testnet (10.31.3.3): icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from nginx2.testnet (10.31.3.3): icmp_seq=2 ttl=64 time=0.043 ms
...

или
curl nginx2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>


PS
ну либо docker-compose как уже посоветовали...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект