jetbrains/teamcity-server!official JetBrains project
本镜像为JetBrains官方提供的TeamCity Server容器化部署方案,适用于生产环境部署和功能评估场景。TeamCity是一款功能强大的持续集成/持续交付(CI/CD)工具,支持自动化构建、测试和部署流程。
首先从Docker Hub拉取镜像:
bashdocker pull jetbrains/teamcity-server
使用以下命令启动TeamCity Server容器,需确保数据和日志目录持久化:
bashdocker run --name teamcity-server-instance \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p <主机端口>:8111 \ jetbrains/teamcity-server
参数说明:
<主机数据目录路径>:映射TeamCity数据目录(存储项目配置、构建结果等),首次启动需为空目录。必须挂载,否则容器关闭后数据丢失。<主机日志目录路径>:映射日志目录,用于问题排查。建议挂载,否则日志随容器销毁丢失。<主机端口>:主机映射端口,容器内默认端口为8111。默认情况下,容器以UID 1000用户运行。如需root权限(不推荐),可通过--user 0参数指定:
bashdocker run --name teamcity-server-instance \ --user 0 \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p <主机端口>:8111 \ jetbrains/teamcity-server
安全提示:以root用户运行容器可能带来权限提升等安全风险,生产环境需进行充分安全评估。
当TeamCity部署在Nginx或Apache等反向代理后,需启用安全Cookie配置,通过环境变量实现:
bashdocker run --name teamcity-server-instance \ -e TEAMCITY_HTTPS_PROXY_ENABLED=true \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p <主机端口>:8111 \ jetbrains/teamcity-server
该参数会使TeamCity使用server-https-proxy.xml配置文件,启用HTTPS相关选项。
TeamCity Server默认通过443端口提供HTTPS服务,但非root用户(如UID 1000)无法使用1024以下特权端口。解决方法如下:
方法1:端口映射(推荐)
将容器内非特权端口8443映射到主机443端口:
bashdocker run --name teamcity-server-instance \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p 443:8443 \ # 主机443端口映射到容器8443端口 jetbrains/teamcity-server
方法2:root用户运行(不推荐)
以root用户启动容器,直接使用443端口:
bashdocker run --name teamcity-server-instance \ --user 0 \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p 443:443 \ jetbrains/teamcity-server
TeamCity基于Tomcat服务器运行,可通过挂载自定义配置目录覆盖默认配置:
bashdocker run --name teamcity-server-instance \ -v /自定义/tomcat/conf目录:/opt/teamcity/conf \ # 挂载自定义Tomcat配置 -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p <主机端口>:8111 \ jetbrains/teamcity-server
如需获取默认Tomcat配置样本,可通过
docker cp命令从运行中的容器复制:
docker cp teamcity-server-instance:/opt/teamcity/conf /本地目录
Windows容器需指定数据目录、日志目录和临时目录的挂载路径:
powershelldocker run --name teamcity-server-instance ` -v <主机数据目录路径>:C:/ProgramData/JetBrains/TeamCity ` -v <主机日志目录路径>:C:/TeamCity/logs ` -v <主机临时目录路径>:C:/TeamCity/temp ` -p <主机端口>:8111 ` jetbrains/teamcity-server
推荐配置:为容器分配足够资源(内存、CPU)并调整JVM参数:
powershelldocker run --memory="6g" --cpus=4 ` -e TEAMCITY_SERVER_MEM_OPTS="-Xmx3g -XX:MaxPermSize=270m -XX:ReservedCodeCacheSize=640m" ` --name teamcity-server-instance ` -v <主机数据目录路径>:C:/ProgramData/JetBrains/TeamCity ` -v <主机日志目录路径>:C:/TeamCity/logs ` -v <主机临时目录路径>:C:/TeamCity/temp ` -p <主机端口>:8111 ` jetbrains/teamcity-server
注意:Windows容器已知问题可参考TeamCity官方文档。
TeamCity Server需配合构建代理执行构建任务,推荐使用官方代理镜像:
如需一键启动Server和Agent,可参考官方Docker Compose示例。
| 环境变量 | 说明 | 示例值 |
|---|---|---|
TEAMCITY_HTTPS_PROXY_ENABLED | 启用HTTPS反向代理模式,使用server-https-proxy.xml配置文件 | true |
TEAMCITY_SERVER_MEM_OPTS | 自定义JVM内存参数 | -Xmx3g -XX:MaxPermSize=270m |
TEAMCITY_CONTEXT | 修改Tomcat中TeamCity应用的上下文路径(默认ROOT,即[***]) | /teamcity(访问路径变为[***]) |
通过-e参数传递环境变量,例如调整JVM内存:
bashdocker run --name teamcity-server-instance \ -e TEAMCITY_SERVER_MEM_OPTS="-Xmx2g -XX:MaxPermSize=270m -XX:ReservedCodeCacheSize=640m" \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ -p <主机端口>:8111 \ jetbrains/teamcity-server
停止当前容器后,通过以下命令运行maintainDB脚本:
bashdocker run -it --name teamcity-server-instance \ -v <主机数据目录路径>:/data/teamcity_server/datadir \ -v <主机日志目录路径>:/opt/teamcity/logs \ jetbrains/teamcity-server \ "/opt/teamcity/bin/maintainDB.sh" "backup"
注意:需保持数据目录和日志目录挂载路径与主服务启动命令一致。
docker stop teamcity-server-instancedocker pull jetbrains/teamcity-server详细升级步骤请参考官方升级指南。
本镜像遵循TeamCity许可证。免费版限制:最多100个构建配置和3个构建代理。商业使用需购买相应许可证。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务