设置docker容器的运行时代理配置不起作用
我只是试图通过本身就是本地容器的代理来强迫来自Docker容器的http流量
该功能似乎是Docker文档的一部分:
https://docs.docker.com/network/proxy/
我所做的是复制了一个简单的节点应用程序,该应用程序调用了外部网站。我从这里使用了代码:https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html
此Node.js服务器在端口8080上侦听
然后,我创建了一个vertx容器,以侦听8081端口,以将流量代理到需要发送的位置。
在用于Node.js服务器的Dockerfile中,我添加了一个ENV条目来强制执行https流量
FROM xgeoff/node-web-app
ENV HTTPS_PROXY "127.0.0.1:8081"
CMD [ "npm", "start" ]
但是它不起作用。代理服务器未收到流量,请求仅直接转到外部网站。我通过将代理端口更改为8082再次进行了测试,该端口没有监听任何内容,但未产生任何错误。同样,来自Node容器的流量会直接流向外部网站。
我尝试了另一种方法,即在构建映像时指定代理端口,如下所示:
docker build --build-arg https_proxy=127.0.0.1:8082 -t <image_name> .
它仍然不起作用。所以我有点困惑。
顺便说一句,我正在使用docker compose启动这两个服务。这是docker-compose.yml文件:
version: '3'
services:
node:
image: 'node-web-app'
ports:
- '8080:8080'
ambassador:
image: 'vertx-groovy-proxyserver'