【问题标题】:What server URL should one provide for TeamCity agent in Docker?应该为 Docker 中的 TeamCity 代理提供什么服务器 URL?
【发布时间】:2026-01-11 11:40:02
【问题描述】:

问题。我正在尝试使用 DockerUbuntu Linux 16.04.1 LTS 上创建 TeamCity 基础架构(服务器和代理)。我已经使用 jetbrains/teamcity-server 映像运行了一个 Docker 容器,如 this page 中所述。可以使用服务器的 IP 地址和端口 8111 通过 Web 浏览器访问 TeamCity 服务器。

现在我尝试使用this page 中描述的代理运行 Docker 容器。它是这样写的:请注意,“localhost”通常不起作用,因为它指的是容器内的“localhost”。好吧,当我向代理容器的运行脚本提供“http://localhost:8111”或“http://127.0.0.1:8111”或“http://my_server_ip:8111”时,我终于得到 1)“警告 - buildServer.AGENT.registration - 在服务器通过 URL http://localhost:8111sic!总是 localhost)。将继续重复连接尝试。”,或 2)“警告 - buildServer.AGENT.registration - 通过 URL 向服务器询问通信协议时出错http://localhost:8111/app/agents/protocols。”

我还试图揭示运行服务器的 Docker 容器的 IP 地址,并将其提供给代理运行脚本。但结果是一样的。

问题。我应该提供什么服务器 URL? TeamCity 配置中是否有我想念的 Docker 的隐含步骤?

【问题讨论】:

    标签: linux docker continuous-integration teamcity


    【解决方案1】:

    您可以使用--link 参数链接容器:

    1. 开始您的 jetbrains/teamcity-server 并使用 --name teamcity-server 为其命名
    2. 启动代理容器并使用--link teamcity-server 启用与teamcity-server 容器的连接
    3. 在您的代理容器内,您现在可以使用teamcity-server 作为主机名来连接到teamcity-server 容器

    还请查看取代--link 功能的Docker container networking

    【讨论】:

    • 现在您可以在您的teamcity-agent 中引用链接的teamcity-server 容器(在我的例子中,我命名为teamcity)+ 使用内部端口8111。像这样SERVER_URL=http://teamcity:8111
    • 我已将卷映射到代理容器的主机。只有在 buildAgent.properties 文件中设置 serverUrl 后,代理才连接到服务器。当我运行容器时,它会从这个文件中读取属性,因此环境变量会被忽略。
    最近更新 更多