macos
开发中会遇到ip地址不方便暴露的情况。
解决方法见: https://stackoverflow.com/questions/27810076/how-do-i-access-a-server-on-localhost-with-nginx-docker-container
核心是--add-host
You can get your current IP address as shown here:
ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'
Then you can use the --add-host
flag with docker run:
docker run --add-host localnode:$(ifconfig en0 | grep inet | grep -v inet6 | awk '{print \$2}') ...
In your proxypass use localnode instead of localhost.
尝试可行:
docker run -it --rm --add-host localhost:$(ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}') nginx bash
apt-get update
apt-get install inetutils-ping
ping localhost
此外,还有一种方法:启动nginx容器,添加配置--network=host
,使得所有容器端口都对应属主机端口,不存在映射关系。
- 可以使用localhost
- 不需要添加 -p 参数
--network host
不适用macos。
使用例如:
docker run -d --name nginx --network host nginx
本机和宿主机公用端口,也不需要诸如-p 80:80
之类的端口映射。
这在设置反向代理为localhost时有用。