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 系統。