const hostname = '0.0.0.0'; // << This is where I'm confused
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Quando eu dockerizo este aplicativo e o executo em um contêiner, o nome do host 0.0.0.0 funciona, mas 127.0.0.1 não funciona. Eu entendo o motivo porque os contêineres docker praticamente obtêm seu próprio IP.
Então, quando eu construo e executo o container quando eu defino a variável hostname para 127.0.0.1, e então visito 127.0.0.1 no meu navegador, eu não estou me conectando ao endereço IP do container, mas a minha máquina local.
Mas por que quando executo o aplicativo em contêiner em 0.0.0.0 e visito 127.0.0.1 no meu navegador, ele agora se conecta ao contêiner em vez de à minha máquina local?
Obrigada.
docker é "uma máquina diferente" e sua máquina obtém uma porta para essa máquina no localhost.
Portanto, quando o aplicativo dentro do docker escuta 127.0.0.1, que é válido apenas dentro dessa máquina, para se conectar a ele "de fora", você precisa ouvir o
any
endereço.Então são 2 diferentes
127.0.0.1
.Se você ouvir
any
(0.0.0.0), ele também estará disponível em 127.0.0.1 e em todas as outras interfaces/IPs na máquina.