目标是:
我已经在ubuntu上运行了nginx,成功完成了任务。但是,当我在docker容器中尝试相同的操作时,每个“ / api”请求都会得到502:
2019/11/03 14:35:39 [错误] 6#6:* 22连接到上游时,connect()失败(111:连接被拒绝),客户端:172.17.0.1,服务器:127.0.0.1,请求:“ GET / API /库/源/查找页= 0&大小= 40&q = JTdCJTIycXVlcnklMjIlM0ElMjIlMjIlMkMlMjJwZXJpb2QlMjIlM0ElMjJBTlRJUVVJVFklMjIlMkMlMjJjbGFzc2lmaWNhdGlvbnMlMjIlM0ElNUIlNUQlMkMlMjJ0eXBlcyUyMiUzQSU1QiU1RCU3RA == HTTP / 1.1" ,上游:“ http://127.0.0.1:8080/api/library/source/find?page=0&size=40&q= JTdCJTIycXVlcnklMjIlM0ElMjIlMjIlMkMlMjJwZXJpb2QlMjIlM0ElMjJBTlRJUVVJVFklMjIlMkMlMjJjbGFzc2lmaWNhdGlvbnMlMjIlM0ElNUIlNUQlMkMlMjJ0eXBlcyUyMiUzQSU1QiU1RCU3RA == “主持人: ”本地主机“,引用:” HTTP://本地主机/库/期/古风“172.17.0.1 - - [03 /月/ 2019:14:35:39 0000]? ”GET / API /库/源/查找页= 0&大小= 40&Q = JTdCJTIycXVlcnklMjIlM0ElMjIlMjIlMkMlMjJwZXJpb2QlMjIlM0ElMjJBTlRJUVVJVFklMjIlMkMlMjJjbGFzc2lmaWNhdGlvbnMlMjIlM0ElNUIlNUQlMkMlMjJ0eXBlcyUyMiUzQSU1QiU1RCU3RA == HTTP / 1.1“ 502 559” HTTP: // localhost / library / period / antiquity “” Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 78.0.3904.87 Safari / 537.36“”-“
'172.17.0.1'看起来很奇怪。我使用“ nginx”映像,它的/ etc / hosts文件中包含以下内容:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 1a0b306a3a80
注意'172.17.0.2',而不是'172.17.0.1'。
我正在运行的Dockerfile和Nginx配置可以在以下位置找到:https : //github.com/ahlinist/tempvs-ui
该映像的构建和运行方式为:sudo docker build。-t tempvs-ui sudo docker run -p 80:80 tempvs-ui
我究竟做错了什么?如何使Docker映像将请求发送到localhost:8080?
快速解答:使用其他参数网络运行docker :
docker run -p 80:80 --network=host tempvs-ui
事实是,localhost
您的Docker(主机)服务器和Docker容器中的容器不同。
使用您当前的实现,重定向发生在docker容器内。而您的目标应用程序在主机上运行。这就是为什么存在“连接拒绝”错误的原因。
文档:docker network,docker运行network param。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句