Je suis à la première étape de l'apprentissage de Docker, j'essaie donc les choses de base. J'ai créé deux Node services Express qui ont besoin d'échanger des données via des requêtes HTTP.
Mon docker-compose.yml
fichier
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
utilise le module de requête pour faire une requête POST à service 2
.
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
});
Le résultat de cet appel est:
{Erreur: connectez ECONNREFUSED 172.18.0.3:10010}
En utilisant Postman, je peux tester service2
à http://localhost:10010/api/
et je peux confirmer qu'ils peuvent être atteints et fonctionner comme prévu.
Je manque quelque chose mais je ne peux pas le comprendre. Qu'est-ce qui ne va pas ici?
Voir le document . Le port 10010 est un port hôte mais pas un port conteneur. Vous devez utiliser 9000 lorsque vous accédez à service2
conteneur directement.
Alors changez simplement "http://service2:10010/api/"
à "http://service2:9000/api/"
et cela fonctionnera.