【问题标题】:Get TeamCity running on Docker让 TeamCity 在 Docker 上运行
【发布时间】:2017-03-21 02:50:21
【问题描述】:

我是 TeamCity 和 Docker 的新手。我正在努力获得一个在我的本地机器上运行和使用 TeamCity 的 Docker 容器。我已经尝试了几件事,但无济于事:

我按照指令here 安装了 Docker for Mac。然后我尝试运行以下命令,记录为here,用于在 docker 中设置 teamcity:

    docker run -it --name teamcity-server-instance \
    -v c:\docker\data:/data/teamcity_server/datadir \
    -v c:\docker\logs:/opt/teamcity/logs \
    -p 8111:8111 \
    jetbrains/teamcity-server

返回以下错误:docker: Error response from daemon: Invalid bind mount spec "c:dockerdata:/data/teamcity_server/datadir": invalid mode: /data/teamcity_server/datadir.

采取不同的策略,我尝试按照说明进行操作 here - 我尝试运行以下命令:

    docker run -it --name teamcity -p 8111:8111 sjoerdmulder/teamcity 

终端表明它正在启动一个 Web 服务器,但我无法在 localhost 和 localhost:8111 浏览到它(错误 ERR_SOCKET_NOT_CONNECTED 没有端口,ERR_CONNECTION_REFUSED 有端口)。

由于带有 docker run 命令的网站说要通过 Docker Toolbox 安装 Docker,因此我将其安装在他们指向的位置 (here)。然后我尝试了

    docker-machine ip default

他们建议的命令,但它不起作用,错误“主机不存在:“默认””。这是有道理的,因为网站说“默认”虚拟机将通过运行 Docker Quickstart 创建,而我没有这样做,但他们没有提供任何指向 Docker Quickstart 的链接,所以我不知道他们在说什么关于。

为了尝试获取容器运行的 IP 地址,我尝试了这个命令

    docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

这列出了正在运行的容器的名称,每个容器后跟一个连字符,然后什么也没有。我也试过了

    docker ps -a

这也列出了正在运行的容器,但没有给出 IP。另外,端口是空白的,状态是“exited (130) 4 minutes ago”,所以看起来容器在启动后并没有保持活动状态。

我也再次尝试使用端口 80,希望这会使网站显示在本地主机上:

    docker run -it --name teamcity2 -p 80:80 sjoerdmulder/teamcity

所以在这一点上,我完全感到困惑和受阻 - 我根本无法按照 hub.docker.com 上的说明启动服务器,而且我不知道如何浏览到启动的站点从其他指令开始。

我将非常感谢任何帮助!

【问题讨论】:

    标签: docker teamcity


    【解决方案1】:

    JetBrains 现在为 TeamCity 提供 official docker images。我建议从这些开始。

    TeamCity server 图像中的示例命令如下所示

    docker run -it --name teamcity-server-instance  \
        -v <path to data directory>:/data/teamcity_server/datadir \
        -v <path to logs directory>:/opt/teamcity/logs  \
        -p <port on host>:8111 \
        jetbrains/teamcity-server
    

    这看起来很像您的第一次尝试。但是,c:\docker\data 是 Windows 文件路径。你说你是在 Mac 上运行它,所以这绝对行不通。

    一旦 TeamCity 启动,它应该在端口 8111 上可用。这就是命令的 -p 8111:8111 部分所做的。它将您机器上的端口 8111 映射到 VM Docker for Mac 创建的用于运行容器的端口 8111。 ERR_CONNECTION_REFUSED 可能是由几件事引起的。两种最可能的可能性是

    1. TeamCity 可能需要一些时间才能启动,并且您可能没有给它足够的时间。解决方法是等待。
    2. -it 将以交互模式启动 TeamCity 容器。如果您退出运行命令的终端窗口,容器也可能会终止并且无法访问。解决办法是不要关闭窗口或者在detached模式下运行容器。

    这里有一个很好的概述 Docker for Mac 和 Docker Toolbox 之间的区别:Docker for Mac vs. Docker Toolbox。您不需要两者,在大多数情况下,您需要使用 Docker for Mac 在本地进行测试。

    【讨论】:

    • 谢谢!我也是 Mac 新手,忘记了路径的指定方式不同。现在在 8111 端口上运行良好!
    • 太好了,它在映射路径上是否正常工作,或者您是否需要更改其他任何内容?
    • 我只需要更改我最初发布的命令中的路径,然后它就可以工作了。谢谢!
    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2019-06-23
    • 2017-03-06
    • 2020-08-16
    • 2019-11-21
    相关资源
    最近更新 更多