Solución:
Si está usando docker-for-mac 18.03 o más reciente, crea automáticamente una entrada de DNS especial host.docker.internal
que se une dinámicamente al host inet ip. A continuación, puede utilizar el nombre dns para los servicios proxy que se ejecutan en la máquina host desde el interior de un contenedor como sustituto de localhost
.
es decir, un archivo de configuración nginx:
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
proxy_pass http://host.docker.internal:3000;
}
}
Puede obtener su dirección IP actual como se muestra aquí:
ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'
Entonces puedes usar el --add-host
bandera con docker run
:
docker run --add-host localnode:$(ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}') ...
En tus proxypass
usar localnode
en lugar de localhost
.
Si. Docker necesita conocer su máquina host. Puede establecer un alias para eso con el --add-host
cambiar. En un cuadro * nix para crear un alias a un nombre “localbox”, este sería:
docker run my_repo/my_image --add-host=localbox:<host_name>`
En boot2docker sería:
docker run my_repo/my_image --add-host=localbox:192.168.59.3`
donde debe reemplazar “192.168.59.3” con lo que sea boot2docker ip
devoluciones.
Luego, debe acceder a su máquina host siempre a través del alias localbox, así que simplemente cambie su configuración de nginx a:
location / {
proxy_pass http://localbox:3000;
}