虽然 TeamCity 软件包已经将所有元件都打包成 Jar 档,还写了可以跨平台使用的 Launcher,但对於只是想用 TeamCity 却不熟悉 JVM 的开发者来说仍不够方便,或是对於 DevOps 团队来说,维护不熟悉的技术栈工具仍有风险。这时,我们可以试试使用 Docker 来运行 TeamCity。
首先我们得先建立一个可以运行 Docker 的环境,这边分两条路,假如您是要在一台 Ubuntu Linux 上安装可以对外运作的 Docker 环境的话,可以参考官网的 这份文件 来安装。这边将指令节录如下:
# 设定 Repository
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Docker 官方 GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 指定 Stable Repository,这边以 AMD64 为例,若是 ARM 机器请参考官网文件更换指令
$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker 引擎
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
假如您只是要在自己的开发机上安装 Docker 环境,则我会推荐直接安装 Docker Desktop。直接到 这个网页 ,依照您使用的作业系统下载安装档(macOS 是一个 .dmg
档、Windows 则是一个 .exe
档)後,依照安装程序的指示完成安装即可。
不论是用以上哪种方式安装,完成後可以在终端机里输入指令测试一下是否成功:
$ docker --version
注:近期 Docker 更新了使用条款,别忘了检查一下自己的使用范围是否有需要做出对应的动作喔!
有 Docker 环境後,可以直接用 TeamCity 官网下载页 的这段指令启动 TeamCity。
$ docker run -it --name teamcity-server-instance \
-v <path to data directory>:/data/teamcity_server/datadir \
-v <path to logs directory>:/opt/teamcity/logs \
-p <port on host>:8111 \
jetbrains/teamcity-server
# 范例
$ docker run -it --name teamcity-server-instance \
-v /Users/shengyou/JetBrainsRing/data:/data/teamcity_server/datadir \
-v /Users/shengyou/JetBrainsRing/logs:/opt/teamcity/logs \
-p 8111:8111 \
jetbrains/teamcity-server
在这边提醒一下,记得要自行更换以上指令里的路径及埠号。若看到终端机里回应启动完成就代表 TeamCity 已经准备好第一次的启动设定,我们後续会再详细说明首次启动设定要做的动作。若要关闭,则在终端机里按下 Ctrl+C
即可。若好奇 Docker 的动作,可以开启 Docker Desktop 图型介面查看使用到的 Image 及 Container。
本篇文章使用的安装方式,比较适合以下几种情境:
<<: Day 8 - DOM - Element Object
大家好,我是YIYI,今天是我开始铁人赛的第一天。请大家多多指教! 为什麽会想自己制作APP? 会想...
前言 这周想在地图页面中加入Cluster Item的功能,如果不知道这是什麽,请右转参考法兰克写的...
一. 资料准备 此资料与[Day9]的资料一样为conllu档,都是作为POS任务 架构如下,每个词...
今天要跟大家讲讲TypeScript(TS)的命名空间(Namespace), 命名空间(Names...
今天我们要来做一个专案,我要做一个计算机,以我们所学的来说技术方面很简单,但逻辑方面会比较难,以我来...