Ich bin in der ersten Phase des Lernens, wie man Docker benutzt, also versuche ich grundlegende Dinge. Ich habe zwei Node-Express-Dienste erstellt, die Daten über HTTP-Requests austauschen müssen.Docker HTTP-Requests zwischen Containern
Meine docker-compose.yml
Datei
networks:
isolation-network:
driver: bridge
services:
service1-nodejs:
build:
context: ./service1/
dockerfile: .docker/node.dockerfile
ports:
- "10000:9000"
- "10001:5858"
env_file: ./service1/.docker/env/app.${APP_ENV}.env
networks:
- isolation-network
service2-nodejs:
build:
context: ./service2/
dockerfile: .docker/node.dockerfile
ports:
- "10010:9000"
- "10011:5858"
env_file: ./service2/.docker/env/app.${APP_ENV}.env
networks:
- isolation-network
service1
verwendet die request module eine POST-Anfrage an service 2
zu machen.
request({ url: "http//service2:10010/api/",
method: "POST",
headers: { "Content-Type": "application/json" },
json: true,
body: { ... },
time: true
}, function (err, res, body) {
if (!err && res.statusCode == 200) {
// success
}
// failed
});
Das Ergebnis dieses Aufrufs ist:
{ Error: connect ECONNREFUSED 172.18.0.3:10010}
Postbote Verwendung von I service2
bei http://localhost:10010/api/
testen können und ich kann bestätigen, dass sie tatsächlich wie erwartet erreicht und arbeiten werden.
Ich vermisse etwas, aber ich kann es nicht herausfinden. Was läuft hier falsch?
+ Sie müssen den Container in den anderen verknüpfen –
@JohannesMerz Er nutzt Netzwerke und er bekam die "Service2" als "172.18.0.3" gelöst wird. –
Ich benutze Netzwerke so Verknüpfung sollte nicht notwendig sein, mit dem internen Port des Behälters gelöst meine Frage – Gavello