JetBrains TeamCity 是一款专业的持续集成(CI)服务器工具,支持各种编程语言和构建流程。本文将一步一步带你用 Docker 和 Docker Compose 快速部署 TeamCity,搭配 PostgreSQL 数据库,并确保 所有操作新手可跟着做。
一、环境准备
-
一台已安装 Docker 和 Docker Compose 的 Linux 服务器(建议 Ubuntu)
-
推荐配置:
- 至少 4 核 CPU
- 至少 8 GB 内存
- 至少 10 GB 剩余磁盘空间
如果你尚未安装 Docker,可以参考在服务器上安装 Docker
二、创建所需文件夹(数据持久化)
TeamCity 和 PostgreSQL 都需要挂载本地数据目录,避免容器删除后数据丢失。
1. 一键创建目录结构
sudo mkdir -p /home/teamcity/{datadir,logs,postgres}
创建的目录解释如下:
路径 | 用途 |
---|---|
/home/teamcity/datadir | TeamCity 主数据(如项目、用户等) |
/home/teamcity/logs | 日志文件 |
/home/teamcity/postgres | PostgreSQL 数据文件 |
2. 设置目录权限
确保容器有权限访问这些目录:
sudo chown -R 1000:1000 /home/teamcity
说明:这里 1000:1000
是容器中的默认用户 UID 和 GID,如果你用其他方式运行容器(如 root 用户),可省略。
三、编写 docker-compose.yml
在任意工作目录下(如 /home/teamcity/
),创建文件:
nano docker-compose.yml
粘贴以下内容:
services:teamcity-server:image: jetbrains/teamcity-server:latestcontainer_name: teamcity-serverrestart: unless-stoppeddepends_on:- postgresenvironment:- TEAMCITY_SERVER_MEM_OPTS=-Xmx3g -XX:ReservedCodeCacheSize=640m- TEAMCITY_CONTEXT=/ports:- "8111:8111"volumes:- /home/teamcity/datadir:/data/teamcity_server/datadir- /home/teamcity/logs:/opt/teamcity/logsuser: "1000:1000"mem_limit: 6gcpus: 4.0postgres:image: postgres:15container_name: teamcity-postgresrestart: unless-stoppedenvironment:- POSTGRES_DB=teamcity- POSTGRES_USER=teamcity- POSTGRES_PASSWORD=teamcity_passports:- "5432:5432"volumes:- /home/teamcity/postgres:/var/lib/postgresql/datauser: "1000:1000"mem_limit: 2gcpus: 2.0
说明:
teamcity-server
是 CI 服务器主进程,监听端口 8111。postgres
是 TeamCity 使用的数据库。- 所有数据、配置、日志都绑定本地目录,防止容器删除后数据丢失。
- 容器资源做了合理限制,防止占用太多内存或 CPU。
四、启动服务
在 docker-compose.yml
所在目录执行以下命令:
docker compose up -d
等待镜像下载并启动,首次运行可能需要几分钟。
查看运行状态:
docker compose ps
如果看到两个容器都是 Up
状态,说明已成功运行。
五、访问 TeamCity 并完成初始化
打开浏览器,访问:
http://<你的服务器IP>:8111
首次访问将进入初始化界面:
-
等待 TeamCity 自动初始化配置。
-
选择 PostgreSQL 作为数据库,并填写以下信息:
- Host:
teamcity-postgres
- Port:
5432
- DB:
teamcity
- User:
teamcity
- Password:
teamcity_pass
- Host:
-
提交并完成后续初始化步骤。
💡 提示:容器之间通过服务名通信,因此数据库地址填
teamcity-postgres
而不是localhost
。
六、配置构建代理(Agent)
TeamCity Server 部署完成后,还需要至少一个 Agent 来执行构建任务。
👉 请继续阅读:《TeamCity Agent 配置完整教程(配合 Docker Compose 快速部署)》,了解如何配置构建代理。
这将帮助你:
- 启用默认 agent 或添加多个 agent
- 解决“没有空闲可用代理”的错误
- 授权并管理 agent
七、停止与管理服务
停止服务:
docker compose down
查看日志:
docker compose logs -f teamcity-server
进入容器内部调试:
docker exec -it teamcity-server /bin/bash
八、常见问题 FAQ
1. 浏览器提示“连接被拒绝”?
检查防火墙是否放行 8111 端口:
sudo ufw allow 8111
确认 Docker 是否已成功运行:
docker compose ps
2. 数据丢失?
请检查挂载目录是否创建并有权限,尤其是 /home/teamcity/postgres
和 /home/teamcity/datadir
是否有 1000:1000
权限。
九、总结
通过本文你学会了:
- 如何准备 TeamCity 和 PostgreSQL 持久化目录
- 如何使用 Docker Compose 编排 CI 服务
- 如何启动并初始化 TeamCity 服务
- 如何设置资源限制与权限
- 如何继续配置构建代理(Agent)
配合下一篇教程一起使用,你将拥有完整的 CI/CD 系统。