TeamCity to Docker
资料来源
内容由deepl翻译jetbrains/teamcity-server而来.请先查看官方文档,以官方文档为主
jetbrains/teamcity-server 翻译
Linux 容器
1 |
|
解释:
- <path-to-data-directory>:是主机目录,作为TeamCity数据目录,TeamCity存储项目设置和构建结果。为全新的启动传递一个空目录。如果没有设置映射,你会在容器关闭时丢失所有的TeamCity设置。
- <path-to-logs-directory>:是用于存储TeamCity服务器日志的主机目录。映射可以省略,但这样一来,日志会在容器关闭时丢失,这将使问题调查无法进行。
注意:
如果你需要以非root权限运行基于Linux的容器(例如,在使用一些开源容器应用平台时),通过传递一个额外的-u 1000:1000参数来明确设置服务器的内部用户标识。注意,切换到非根用户后,你可能无法对根用户下创建的文件进行写入操作。在这种情况下,运行chown -R 1000:1000 <目录>来改变包含这些文件的目录的所有权。
HTTPS反向代理TeamCity
- 如果TeamCity作为Nginx或Apache等反向代理服务器的端点,它应该被配置为向终端用户提供安全cookies。
- 为了实现这一点,你可以在docker运行命令中传递一个额外的-e TEAMCITY_HTTPS_PROXY_ENABLED=true参数。有了这个参数,TeamCity将以一个替代的server-https-proxy.xml配置文件启动,该文件可以启用HTTPS选项。
替代的Tomcat配置
TeamCity有Tomcat J2EE服务器,如果你需要为TomCat提供替代配置,你可以使用额外的参数
1 |
|
要获得Tomcat的conf目录的当前内容的样本,可以使用docker cp
命令。
Windows 容器
1 |
|
解释:
见上面的<path-to-ata-directory>和<path-to-logs-directory>描述;<path-to-temp-directory>是临时文件的目录。
注意:
我们还建议为Docker进程分配足够的资源,就像在这个例子中。
1 |
|
关于Windows容器中已知问题的细节,可在TeamCity文档中找到。
数据库
除了数据目录外,TeamCity还在一个SQL数据库中存储用户集和构建结果。默认情况下,TeamCity服务器使用一个内部数据库,存储在数据目录下的文件系统中。然而,生产使用需要一个外部数据库。要在生产中使用服务器,请确保审查并应用建议。
建立代理
你将需要至少一个TeamCity代理来运行构建。查看jetbrains/teamcity-agent和jetbrains/teamcity-minimal-agent图片。要了解如何一次性启动TeamCity服务器和代理,请看这些Docker Compose样本。
附加命令
当你需要向服务器进程传递额外的环境变量时,使用常规的-e选项。例如,要传递TEAMCITY_SERVER_MEM_OPTS环境变量,使用。
1 |
|
要运行 maintainDB 脚本(例如用于服务器备份),请停止正在运行的容器并从主机上执行以下命令。
1 |
|
请确保所有本地系统路径与主服务器启动命令保持一致。要改变Tomcat容器内TeamCity应用的上下文,请将-e TEAMCITY_CONTEXT=/context传给docker run命令。默认的是ROOT,意味着服务器将在http://host/。
升级TeamCity
请务必检查通用的TeamCity升级说明。如果你没有对容器做任何改动,你可以直接停止运行中的容器,通过常规命令拉出一个较新版本的镜像和其中的服务器。如果你改变了镜像,你需要将这些变化复制到新的TeamCity服务器镜像上。一般来说,使用Docker常识来执行升级。
实际操作
1. 拉取镜像
docker pull jetbrains/teamcity-server
2. 创建文件夹
在合适的位置创建如下文件夹
- conf: 配置文件
- data: TeamCity数据目录
- logs: 日志文件
- temp: 缓存文件
3. 复制配置文件
docker images
: 查看teamcity镜像[IMAGE ID]docker run [IMAGE ID] -d
: 通过镜像id运行docker ps -a
: 查看运行的镜像获取[CONTAINER ID]docker cp [CONTAINER ID]
:/opt/teamcity/conf 要存放conf文件的位置: 拷贝配置文件dockers stop [CONTAINER ID]
: 停止镜像 xaat-861223d9-bea5-43e6-b10d-61e09be9bbdddocker rm [CONTAINER ID]
: 删除镜像
4. 执行
(1). 拉取jetbrains/teamcity-agent
1 |
|
(2). 创建docker 网络
1 |
|
(3). 编写docker-compose.yml
注意: 请确保docker已经安装此扩展,如为安装可以访问这里
1 |
|
解释:
- teamcity-agent环境变量
- SERVER_URL– 团队城市服务器代理将连接到的网址
- AGENT_NAME–(可选)TeamCity UI 中的代理名称,如果省略,则自动生成
- AGENT_TOKEN–(可选)代理授权令牌,如果未设置,则应通过 TeamCity UI 对代理进行授权。
- OWN_ADDRESS–(可选,仅限 Linux)构建代理绑定到的 IP 地址,自动检测
- OWN_PORT–(可选,仅限 Linux)端口构建代理绑定到,默认情况下为 9090
- DOCKER_IN_DOCKER– (可选,仅限 Linux)在 Docker 中运行 Docker。
- 重新启动生成代理容器时,它会重新签出生成的源。若要避免这种情况,应传递几个其他选项,以在重新启动之间保留生成代理状态:
- 保留检出源 (-v /opt/buildagent/work:/opt/buildagent/work)
- 保留内部生成代理缓存 (-v /opt/buildagent/system:/opt/buildagent/system)
(4). 运行
注意: 请在 docer-compose.yml 文件根目录下下执行此命令
1 |
|
查看运行情况
1 |
|