1.1.服務器一臺,1H4G(更小內存應該也能夠,自行測試),系統:Ubuntu 16.04 64位git
1.2.數據庫一個,MYSQL,MSSQL均可以(還有其餘的,自行配置),教程是MSSQLdocker
1.3.其餘軟件,Xshell (用於遠程Linux服務器),WinSCP(用於管理Linux服務器上的文件)shell
由於牆的緣由,這裏須要使用國內鏡像加速服務,這裏使用阿里雲的鏡像加速服務,阿里雲的鏡像加速服務,登錄阿里雲後,選擇[容器鏡像服務]->[鏡像加速器]數據庫
2.1.1首先,安裝Docker json
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
裝完後輸入:緩存
docker version
查詢docker是否裝成功。bash
而後配置加速源,這裏可使用阿里雲提供的命令,也能夠用WinSCP找到/etc/docker目錄創建daemon.json服務器
{ "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"] }
xxxxxxx改成阿里雲提供給你的地址架構
若是是使用命令添加,請依此輸入如下命令less
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"] } EOF
而後重啓docker服務
systemctl daemon-reload
systemctl restart docker
Docker環境搭建完畢
拉取官方鏡像(有點大,建議使用雲服務器測試,入站帶寬大,下載速度塊)
docker pull jetbrains/teamcity-server
出現
Status: Downloaded newer image for jetbrains/teamcity-server:latest
則拉取成功,接下來啓動teamcity-server
docker run -d -it --name teamcity-ecms -v /data/tc/datadir:/data/teamcity_server/datadir -p 8111:8111 jetbrains/teamcity-server
//而後
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7a0a5b60a4b1 jetbrains/teamcity-server "/run-services.sh" 6 seconds ago Up 5 seconds 0.0.0.0:8111->8111/tcp teamcity-ecms
出現上述結果就成功了。接下來打開防火牆8111端口(外網的話),訪問: <your id>:8111
出現上述圖片則搭建成功!
點擊[Proceed]按鈕進入下一步,選擇你準備的數據庫類型,這裏選MSSQL,須要下載JDBC drivers,點擊[Downloading JDBC drivers]的按鈕就好了,自動下載
按上面的圖片填寫,點擊[Proceed],稍等3-10分鐘,若是出現報錯,請檢查你的參數是否填寫正確!
弄完以後會出現一個協議,拉到最下面,勾選Accept license agreement,點擊[Continue>]按鈕
而後出現建立帳號的頁面,自行建立一個管理員帳號,登錄~
到這裏爲止,若是沒出現問題,那麼teamcity-server的環境就搭建完畢了。
有個teamcity-server,還須要agent來作Build,push的工做(相似於編譯平臺)
第一步拉取Agent的鏡像
docker pull jetbrains/teamcity-agent
第二步啓動容器
docker run -d -it -e SERVER_URL="192.168.0.19:8111" -v /etc/docker:/data/teamcity_agent/conf -v /var/run/docker.sock:/var/run/docker.sock -v /opt/buildagent/work:/opt/buildagent/work -v /opt/buildagent/temp:/opt/buildagent/temp -v /opt/buildagent/tools:/opt/buildagent/tools -v /opt/buildagent/plugins:/opt/buildagent/plugins -v /opt/buildagent/system:/opt/buildagent/system jetbrains/teamcity-agent
[192.168.0.19:8111]這裏最好填內網地址(安裝速度快,省流量),若是沒有局域網,就要填外網地址,請你們注意!
而且這個啓動方式會和Agent的共享主機的Docker配置和緩存,若是有疑問可使用另一個命令,https://hub.docker.com/r/jetbrains/teamcity-agent/,自行翻閱
執行後,可以使用docker logs -f <CONTAINER-ID>查看啓動日誌,CONTAINER-ID使用docker ps查看
而後進入Server的WEBUI頁面,選擇Agents->Unauthorized
審覈它!而後他就會出如今Connected裏!
到這裏爲準,TeamCity的全部環境就搭好了!!!!!
拉取鏡像並部署容器
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
過3-5分鐘後,防火牆打開8080端口,訪問<your id>:8080
出現上述頁面,成功,rancher環境安裝完畢!!!
修改以前的daemon.json
{
"registry-mirrors": ["https://xfgphhex.mirror.aliyuncs.com"], "insecure-registries":["192.168.0.19:5000"] }
保存。192.168.0.19能夠配置成外網(已測試,木有問題),記得打開5000端口!
重啓docker
systemctl restart docker
注意,重啓docker會把teamcity和rancher的容器關掉,記得重啓一下3個容器(ID經過docker ps -a命令查詢)
docker start <Container ID>
啓動register
docker run -d -p 5000:5000 --name registry registry:2
環境到這一步就搭建完畢了~!接下來就是DevOps實現
打開TeamCity,點擊左上角[projects],點擊[create project]
進入後,選擇[Manually]
填一個名字保存。
進入下面這個頁面,點擊[+Create build configuration]
填一個名字保存。
進入下面這個頁面,填寫源代碼的url,這裏使用朋友的一個腳手架項目作演示,大家也能夠先用這個作實驗,gitee地址:https://gitee.com/kitteam/ecms
保存。返回下圖的頁面,點擊Build Steps ,點擊[+Add build step]按鈕
第一步,使用dockerfile製做鏡像,參數以下,dockerfile在圖上的地址,自行在gitee查看,可使用後面的選擇選出來也行。路徑必定要填'/'要否則copy代碼會失敗
第二步,將打包好的鏡像register到agent的服務器上
繼續[+Add build step],此次命令選other,具體參數以下圖
第三部,把register裏的鏡像推送上去
繼續[+Add build step],此次命令選push,具體參數以下圖
OK,到這一步teamcity的配置就完成了!
接下來run一次把~~~~~
【192.168.1.43的問題是由於內網IP換了~~~,因此跟着換了,你們不用在乎這點細節】
點擊後,能夠去[Projects]裏看日誌,稍等片刻把~(第一次build有點慢(5分鐘左右),後續build由於docker緩存的緣由會快不少(1分鐘))
出現下圖,則teamcity的任務就所有完成了!!
頂部:基礎架構-主機,點擊添加主機
點擊保存
填寫IP,複製下面的命令到服務器執行
docker run -e CATTLE_AGENT_IP="192.168.1.43" --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://xxx.xx.xx.xxx:8080/v1/scripts/4E62331D4DDD7218B2F3:1546214400000:WmLv6AlVT21dW7TheGXE8iRvQ
而後稍等片刻,安裝成功後,前往主機頁面查看
點擊左上角,選擇環境
點擊【添加應用】
隨便填一下保存!
跳轉後,點擊右上角【添加服務】
填寫參數以下圖
點擊建立
而後稍等片刻,打開主機
啓動完成,這個時候打開<your ip>:8081訪問網站
到這裏,這個文章就結束了,成功~
但願文章對有興趣搭建CI/CD DevOps環境的公司和我的有所幫助,蟹蟹!