docker - 如何使用no_proxy设置设置Docker

标签 docker proxy docker-compose

我正在使用docker compose在自己的机器上设置三个docker容器:

  • 一个是用React.js编写的门户(称为portal)
  • 一个是使用GraphQL的中间件层(称为gateway)
  • 一个是使用node.js的身份验证服务(称为auth)

  • 我还拥有在公司防火墙后运行的大量服务。

    在大多数情况下,gateway将请求防火墙后的资源,因此我已将docker容器配置为通过可访问其他服务的鱿鱼代理来代理请求。但是,不应代理对我的本地auth服务和其他本地服务的请求。因此,我具有以下 docker 代理配置(请注意noProxy设置):
    ~/.docker/config.json
    
        ...
        "proxies": {
            "default": {
                "httpProxy": "http://172.30.245.96:3128",
                "httpsProxy": "http://172.30.245.96:3128",
                "noProxy": "auth,localhost,127.0.0.1,192.168.0.1/24"
            }
        }
        ...
    
    

    通过上述设置,portal请求 do 通过浏览器使用gateway直接转到http://192.168.0.15/foo,但是当gateway使用auth提出对http://auth:3001/bar的请求时,它们不会直接进入auth而是通过-我在努力避免。

    我可以看到auth请求是通过鱿鱼代理错误通过代理发送的:
    <p>The following error was encountered while trying to retrieve the URL: <a href="http://auth:3001/token">http://auth:3001/bar</a></p>
    

    如何使用docker服务名称(例如noProxy)设置docker容器以遵守auth设置?在我看来,从gatewayauth的请求被误认为是172.30.245.96:3128代理,导致它无法正常工作。谢谢

    最佳答案

    您的Docker配置看起来不错,但是您的主机不理解如何解析名称auth。根据给定的IP(192.168.x.x),我假设您正在尝试从主机访问容器服务。在主机的auth中添加/etc/hosts条目(如果是Windows,则为C:\Windows\System32\Drivers\etc\hosts)。

    查看Linked docker-compose containers making http requests了解更多详细信息。
    如果遇到从容器内部获取服务的问题,请查看docker-compose resolve hostname in url作为示例。

    关于docker - 如何使用no_proxy设置设置Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57503445/

    相关文章:

    rest - Delphi Seattle DataSnap 客户端 - 代理服务器设置不起作用

    mysql - 在 docker-compose 中使用 MySQL 初始化 Hibernate 时连接被拒绝

    docker - 我在运行docker-compose up命令时无法收到错误消息

    python - Docker容器不断增长

    java - 不会抛出Java代理身份验证IOException

    python - 您的 shell 尚未正确配置为在 dockerfile 上使用 'conda activate'

    docker - 如何在docker kafka服务中确保唯一的经纪人ID

    Docker 容器在 kubernetes 内工作/不工作

    mysql - 如何在 Openshift 中将特定目录路径的持久卷挂载到默认 MySQL 数据目录

    visual-studio - 无法在 Proxy 后面安装 Visual Studio Build 工具(创建离线安装程序时)