第四天:以 Docker 运行 TeamCity

虽然 TeamCity 软件包已经将所有元件都打包成 Jar 档,还写了可以跨平台使用的 Launcher,但对於只是想用 TeamCity 却不熟悉 JVM 的开发者来说仍不够方便,或是对於 DevOps 团队来说,维护不熟悉的技术栈工具仍有风险。这时,我们可以试试使用 Docker 来运行 TeamCity。

先建立一个可以运行 Docker 的环境

首先我们得先建立一个可以运行 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 更新了使用条款,别忘了检查一下自己的使用范围是否有需要做出对应的动作喔!

运行 TeamCity

有 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。

适用情境

本篇文章使用的安装方式,比较适合以下几种情境:

  1. 不熟悉 JVM 生态系,排斥手动安装 JDK 的人
  2. 熟悉 Docker 操作,习惯透过 Docker 建立隔离环境
  3. 拥有整台主机的控制权,有足够权限可以使用 Docker

参考资料


<<:  Day 8 - DOM - Element Object

>>:  Day 8:学习资源哪里找?

30天零负担轻松学会制作APP介面及设计【DAY 01】

大家好,我是YIYI,今天是我开始铁人赛的第一天。请大家多多指教! 为什麽会想自己制作APP? 会想...

[Cmoney 菁英软件工程师战斗营] IOS APP 菜鸟开发笔记(6)----关於标记丛集(Cluster Item)

前言 这周想在地图页面中加入Cluster Item的功能,如果不知道这是什麽,请右转参考法兰克写的...

[Day20] NLP会用到的模型(四)-LSTM实现POS

一. 资料准备 此资料与[Day9]的资料一样为conllu档,都是作为POS任务 架构如下,每个词...

Day28-TypeScript(TS)的命名空间(Namespace)

今天要跟大家讲讲TypeScript(TS)的命名空间(Namespace), 命名空间(Names...

DAY26 第一个完整程序练习,一台计算机!(一)

今天我们要来做一个专案,我要做一个计算机,以我们所学的来说技术方面很简单,但逻辑方面会比较难,以我来...