/ Portas de publicação do Docker-Compose no computador host Nodejs + Express - node.js, express, docker, docker-compose

Portas de publicação do Docker-Compose no computador host Nodejs + Express - node.js, express, docker, docker-compose

Eu construí um arquivo docker-compose e quero acessar meu aplicativo nodejs em localhost:3000 do meu computador host, mas publicar as portas não parece estar funcionando.

Quando eu corro compor tudo parece estar funcionando bem e recebo a confirmação Listening on port 3000. No entanto, quando vou para localhost:3000 de um navegador, bem como curl Eu recebo uma resposta não encontrada ou de tempo limite.

Estou faltando alguma coisa aqui?

Meu servidor NodeJS:

var server = app.listen( process.env.PORT || 3000, function(){
console.log("Listening on port " + server.address().port);
});

Meu arquivo Docker-Compose.yml:

version: "3"
services:
api:
image: baum-test:v0
ports:
- "3000:3000"
networks:
- webnet
mongodb:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- ./data:/data
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:

Respostas:

0 para resposta № 1

Se você estiver executando isso usando docker stack deploy comando, então você pode "constraints: [node.role == manager]" na tua docker-compose.yml. Se você usou docker-compose up comando para obter a composição, então você está usando os recursos Swarm do arquivo de composição, mas no docker-compose. Remova completamente a seção abaixo

 deploy:
placement:
constraints: [node.role == manager]

0 para resposta № 2

Como estou executando as ferramentas do docker para windows (a versão antiga sem hyper-v), tive que declarar manualmente o endereço IP da imagem da VM do Docker, já que ele não estava vinculado ao host local.