Ich habe Probleme, eine nodeJS-Anwendung, die als Andock-Container ausgeführt wird, mit einer mongoDB zu verbinden. Lassen Sie mich erklären, was ich bisher getan haben:So verbinden Sie den docket-Container nodeJS mit mongoDB
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a3732cc1d90 mongo:3.4 "docker-entrypoint..." 3 weeks ago Up 3 weeks 27017/tcp mongo_live
Wie Sie sehen können, gibt es bereits ein Lauf Mongo Docker Behälter ist.
Jetzt bin ich meine NodeJS Anwendung Docker Behälter laufen (die eine Ansammlung von meteorJS ist):
$ docker run -it 0b422defbd59 /bin/bash
In diesem Docker Behälter Ich möchte die Anwendung auszuführen, indem Sie:
$ node main.js
Jetzt bekomme ich den Fehler
Error: MONGO_URL must be set in environment
Ich habe bereits versucht, MONGO_URL mit der Einstellung:
ENV MONGO_URL mongodb://mongo_live:27017/
Aber das funktioniert nicht:
MongoError: failed to connect to server [mongo_live:27017] on first connect
Also meine Frage ist, wie man eine DB verbinden, die - soweit ich verstehen - ‚außerhalb‘ des Laufbehälter. Alternativ wie richte ich eine neue DB für diesen Container ein?
ich Docker compose verwenden, aber nicht für diesen Fall. Lassen Sie mich erklären: Hier ist es Teil eines CI-Workflows. Daher führe ich docker build mit einer dockerfile aus: 'docker build -t $ CI_REGISTRY_IMAGE: test -f Dockerfile.test .'. Also ich weiß nicht, wie man docker komponieren in dieser Einstellung verwendet ... – user3142695
Docker komponieren kann auch ein Bild erstellen, Sie können auch aufrufen, mit komponieren, die helfen können, Tests auszuführen. Es gibt auch die Option "--abort-on-container-exit", die auch zum Ausführen von Tests in CI geeignet ist. zum Beispiel: https://github.com/mobilityhouse/prometheus-bridge/blob/master/Jenkinsfile#L78 – Boynux
Ich habe eine Docker-Compose-Lösung unten geschrieben, ich bin sicher, dass Sie das als Referenz verwenden und es herausfinden können –