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 № 1Se 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.