3分钟上手!TeamCity Docker Compose 极速部署指南:从单节点到多服务器集群
你是否还在为CI/CD环境搭建浪费数小时?是否因多节点配置复杂望而却步?本文将通过实战案例,教你用Docker Compose一键部署TeamCity(持续集成/持续部署,Continuous Integration/Continuous Deployment)环境,从单节点开发测试到企业级多服务器集群全覆盖,全程代码可复制,3分钟启动你的自动化构建流水线。
读完本文你将掌握:
- 单节点TeamCity环境的3步极速部署
- Windows/Linux跨平台配置差异解决方案
- 多服务器集群架构设计与负载均衡实现
- agents自动注册与权限管理最佳实践
- 数据持久化与日志管理进阶技巧
一、环境准备:5分钟检查清单
1.1 系统要求
| 环境类型 | CPU核心 | 内存 | 磁盘空间 | 操作系统版本 | Docker版本 |
|---|---|---|---|---|---|
| 开发测试 | ≥2核 | ≥4GB | ≥20GB | Ubuntu 20.04+/Windows 10+ | ≥20.10.12 |
| 生产环境 | ≥4核 | ≥8GB | ≥50GB | Ubuntu 22.04+/Windows Server 2019+ | ≥23.0.1 |
1.2 基础软件安装
# Ubuntu系统
sudo apt update && sudo apt install -y docker.io docker-compose
sudo systemctl enable --now docker
# Windows系统(PowerShell管理员模式)
choco install docker-desktop -y
1.3 源码获取
git clone https://gitcode.com/gh_mirrors/te/teamcity-docker-samples
cd teamcity-docker-samples
二、单节点部署:3步启动CI/CD流水线
2.1 目录结构解析
teamcity-docker-samples/
├── compose-ubuntu/ # Linux环境配置
│ ├── agents/ # 构建代理配置
│ │ ├── agent-1/conf/ # 代理1配置文件
│ │ └── agent-2/conf/ # 代理2配置文件
│ ├── data_dir/ # 服务器数据持久化目录
│ └── docker-compose.yml # 主配置文件
└── compose-windows/ # Windows环境配置
└── docker-compose.yml
2.2 Linux环境部署(推荐)
# 进入Ubuntu配置目录
cd compose-ubuntu
# 启动服务(后台运行)
docker-compose up -d
# 查看服务状态
docker-compose ps
执行成功后将显示类似输出:
Name Command State Ports
----------------------------------------------------------------------------------
compose-ubuntu_agent-1_1 /run-services.sh Up
compose-ubuntu_agent-2_1 /run-services.sh Up
compose-ubuntu_server_1 /opt/teamcity/bin/run... Up 0.0.0.0:8112->8111/tcp
2.3 首次访问与配置
- 打开浏览器访问:
http://localhost:8112 - 首次登录创建管理员账户
- 进入Agents → Unauthorized页面授权代理:
2.4 Windows环境部署
# 进入Windows配置目录
cd compose-windows
# 启动服务
docker-compose up -d
# 获取服务器IP并打开浏览器
$serverIP = docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' teamcitywindows_server_1
explorer "http://$serverIP`:8111"
注意:Windows容器需在Docker Desktop中启用"使用Windows容器"选项,且仅支持Windows Server或专业版系统。
三、多节点集群:企业级高可用方案
3.1 架构设计
3.2 集群部署步骤
# 进入多节点配置目录
cd multinode
# 启动集群服务(首次启动需5-10分钟初始化数据库)
docker-compose up -d
# 查看节点状态
docker-compose ps | grep teamcity-server
成功启动后,Nginx会自动分发请求到两个服务器节点,实现负载均衡和故障转移。
3.3 节点配置验证
- 访问
http://localhost:8111/admin/admin.html?item=nodesConfiguration - 确认显示两个节点状态为"Running"
- 测试故障转移:停止主节点后观察服务是否自动切换
# 模拟主节点故障
docker-compose stop teamcity-server-1
# 查看次节点是否接管服务
curl -I http://localhost:8111
四、核心配置深度解析
4.1 Docker Compose核心参数
以compose-ubuntu/docker-compose.yml为例:
version: '3.8'
services:
server:
image: jetbrains/teamcity-server:${TEAMCITY_VERSION:-2023.11}
ports:
- "8112:8111"
volumes:
- ./data_dir:/data/teamcity_server/datadir
- ./teamcity-server-logs:/opt/teamcity/logs
restart: unless-stopped
agent-1:
image: jetbrains/teamcity-agent:${TEAMCITY_VERSION:-2023.11}
volumes:
- ./agents/agent-1/conf:/data/teamcity_agent/conf
- /var/run/docker.sock:/var/run/docker.sock
environment:
- SERVER_URL=http://server:8111
depends_on:
- server
关键参数说明:
volumes: 数据持久化配置,确保重启后数据不丢失restart: unless-stopped: 服务异常退出时自动重启depends_on: 定义服务启动顺序,确保服务器先于代理启动
4.2 版本控制最佳实践
创建.env文件统一管理版本号:
# .env文件内容
TEAMCITY_VERSION=2023.11
POSTGRES_VERSION=14-alpine
使用方法:
# 复制示例配置
cp .env.example .env
# 编辑版本号
nano .env
# 应用配置启动
docker-compose up -d
五、数据管理与维护
5.1 数据备份策略
# 创建数据备份脚本 backup.sh
#!/bin/bash
BACKUP_DIR=/backup/teamcity
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份服务器数据
docker exec teamcity_server_1 tar -czf - /data/teamcity_server/datadir | \
cat > $BACKUP_DIR/datadir_$TIMESTAMP.tar.gz
# 备份数据库(多节点环境)
docker exec teamcity_postgres_1 pg_dump -U test buildserver > \
$BACKUP_DIR/db_$TIMESTAMP.sql
# 保留最近30天备份
find $BACKUP_DIR -type f -mtime +30 -delete
5.2 日志管理
# 实时查看服务器日志
docker-compose logs -f server
# 查看代理构建日志
docker-compose exec agent-1 cat /opt/teamcity-agent/logs/teamcity-agent.log
# 日志轮转配置(/etc/logrotate.d/teamcity)
/data/web/disk1/git_repo/gh_mirrors/te/teamcity-docker-samples/compose-ubuntu/teamcity-server-logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
}
六、常见问题解决方案
6.1 代理无法连接服务器
6.2 数据迁移步骤
# 1. 在新服务器安装相同版本Docker和Docker Compose
# 2. 复制数据卷到新服务器
scp -r ./data_dir user@new_server:/path/to/teamcity-docker-samples/compose-ubuntu/
# 3. 在新服务器启动服务
cd /path/to/teamcity-docker-samples/compose-ubuntu
docker-compose up -d
6.3 资源优化配置
针对低配置环境,可调整docker-compose.yml限制资源使用:
services:
server:
deploy:
resources:
limits:
cpus: '2'
memory: 4G
environment:
- TEAMCITY_SERVER_OPTS=-Xmx2g -XX:MaxPermSize=256m
七、总结与进阶路线
通过本文学习,你已掌握TeamCity从单节点到多服务器集群的完整部署流程。建议进阶学习以下内容:
-
构建管道(Build Pipeline)设计
- 多阶段构建配置
- 测试自动化集成
- 部署环境管理
-
高级安全配置
- HTTPS证书配置
- 代理认证与授权
- 敏感信息加密存储
-
性能优化
- 构建缓存策略
- 并行构建配置
- 资源动态分配
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



