您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为node.js应用构建docker镜像在代理后失败

为node.js应用构建docker镜像在代理后失败

使用的方法--build- arg是正确的:您只想在构建Docker映像时使用代理设置,而不是将它们包含在Dockerfile中,这样它就不会绑定到特定的环境(您不需要在其上添加ENV条目) 。

您的问题是您试图在docker build中用作cntlm代理localhost,这是无效的,因为在构建时,它将指向运行构建的docker容器,但实际上应指向在其中提供cntlm的主机的地址。码头工人网络。

为了使它起作用,您可以将cntlm配置为侦听多个接口,然后激活网关模式,以便可以从其他计算机上使用它。这样,在构建映像时,您会将请求从Docker实例发送到主机。

我的Docker桥接网络如下(我的主机以的地址获取docker0 172.17.0.1):

$ docker network inspect bridge
...
            "Config": [
            {
                "subnet": "172.17.0.0/16",
                "Gateway": "172.17.0.1"
            }
...

在我的cntlm.conf

...
Listen          127.0.0.1:3128
Listen          172.17.0.1:3128
...
Gateway yes
Allow           127.0.0.1/32
Allow           172.17.0.0/16
Deny            0/0
...

使用此配置,cntlm将侦听localhost和docker bridge网络,仅允许来自任何docker容器的远程连接。

然后在使用npm构建映像时使用代理设置:

$ docker build --build-arg=HTTP_PROXY=http://172.17.0.1:3128 --build-arg=HTTPS_PROXY=http://172.17.0.1:3128 .

我希望能有所帮助,我知道在企业网络中实现所有这些确实是皮塔饼!

我今天发现的事情是,如果您使用v2格式的docker- compose文件,则启动compose文件将为您的容器创建一个新的网络。这意味着您需要相应地调整cntlm文件以接受来自这些新范围的连接。

举例来说,我的一个compose文件刚刚在下创建了一个网络172.19.0.0/16,但是我的cntlm配置只允许来自的连接172.17.0.0/16。如果遇到连接问题,请检查系统日志以识别问题。

https://docs.docker.com/compose/networking/

Node 2022/1/1 18:18:16 有390人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶