手把手教你玩轉 Gitea|使用 Docker 安裝 Gitea
使用 Docker 安裝 Gitea 的過程非常簡單的,堪比「一鍵式」安裝。Gitea 安裝使用系列教程將會從多種方式進行全方位的實操演示。
📺視頻演示中使用騰訊雲實驗環境安裝 Docker 並快速啟動 Gitea
環境準備
服務器配置
| OS | Version | CPU | RAM |
|---|---|---|---|
| Debian Linux | bullseye |
2 Core | 4GB |
本文所採用的服務器配置如下,建議內存最少在 1GB 以上。OS 版本可以是 Debian、Ubuntu、Fedora 以及 CentOS,本文優先使用 Debian,其他系統發行版的會在後續文章中酌情演示。
Docker 運行環境
最新的 Docker Engine 和 Docker Desktop 集成了 docker compose 命令行工具。更多信息請參閱:
- Docker Engine 安裝指南://docs.docker.com/engine/install/
- Docker Engine 一鍵安裝腳本:
curl -fsSL //get.docker.com | bash - 解決 docker 命令執行權限問題://docs.docker.com/go/daemon-access/
- 檢查 docker 運行環境:
docker info
選擇鏡像
Gitea 提供了標準的容器鏡像(gitea/gitea),統一支持 SQLite、MySQL、PostgreSQL 和 SQL Server 作為數據庫後端。每個版本的鏡像同時支持兩種主流的處理器體系結構 amd64 和 arm64/v8。
鏡像標籤
-
- 最新的穩定版
latest
-
- 固定在某個穩定版
1.17.2,1.17,1
-
- 最新的開發版,隨 Gitea 代碼合併同步更新
dev
Rootless 鏡像
Rootless 鏡像使用 Gitea 內建的 Go SSH 提供 Git 服務,代替了 OpenSSH。
在選用 rootless 鏡像時,加上鏡像標籤 -rootless。支持的鏡像標籤如下:
latest-rootless,1-rootless1.17.2-rootlessdev-rootless
安裝 Gitea
環境變量
在集群模式安裝 Gitea 時,您可以通過環境變量為 Gitea 容器指定一些共享的初始值,例如 UID/GID、數據庫連接參數、共享密鑰等。諸如數據庫和 Gitea 的一些功能配置選項最終都會在安裝引導界面結束後寫入到 app.ini 文件並保存。因此,如果是作為單實例部署的 Gitea,您無需關心如何設置這些環境變量,稍後的初始化安裝過程會為您自動生成這些配置。初始化完成後,您可以在多個 Gitea 實例間共享同一份配置文件和數據緩存來實現服務器集群。
啟動 Gitea
創建工作目錄
首先創建一個 gitea 工作目錄,後續工作都在這個目錄下完成。
mkdir ~/gitea && cd ~/gitea
# 預先創建 data 和 config 目錄,稍後用於數據掛載
mkdir data config
chown 1000:1000 data config
創建 docker-compose.yml
使用下面的模板創建 docker-compose.yml,這裡使用到的鏡像是 gitea/gitea:1.17.2-rootless。
rooless 版本的鏡像默認使用 UID/GID 1000:1000 作為程序運行的用戶組,為了保證 gitea 程序掛載權限正確的數據目錄,我們在前面的步驟中預先創建了
data和config目錄。
version: "3"
services:
server:
image: gitea/gitea:1.17.2-rootless
container_name: gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
幾個重要的參數說明:
volumes:數據掛載./data:/data,將主機當前目錄下的data目錄掛載到容器內的/var/lib/gitea目錄。/data是 Gitea 標準容器的數據存儲點,包含了 Git 倉庫、SQLite 數據庫文件、緩存文件等。./config:/etc/gitea掛載 Gitea 的 app.ini 配置文件所在的目錄。/etc/timezone:/etc/timezone:ro用於指定時區/etc/localtime:/etc/localtime:ro同上,用於指定本地時間
ports:端口映射3000:3000HTTP 端口,從左到右的順序是從主機映射到 Docker 容器。在此,您可以通過//127.0.0.1:3000直接訪問到 Gitea 的 Web 界面,或通過反向代理引擎提供更具有擴展性的 SSL 集成,例如 Nginx。2222:2222SSH 端口。這裡主機側暴露的端口為2222避免了與默認 SSH 服務端口衝突。禁用 SSH 時刪除端口轉發即可。如果您希望將主機完全作為 Gitea 服務器,可以將主機配置文件/etc/ssh/sshd_config中的端口Port 22更改為其他值,使得 Docker 可以使用 Gitea 內建的 Go SSH 或 OpenSSH 佔用 22 端口作為 Git 服務。
啟動 Gitea 實例
使用 docker compose 命令拉取鏡像並啟動 Gitea 實例:
docker compose up -d
用 docker compose ps 查看容器:
NAME COMMAND SERVICE STATUS PORTS
gitea "/usr/local/bin/dock…" server running 2222/tcp, 0.0.0.0:3000->3000/tcp
用 docker compose logs -f 查看容器日誌:
$ docker compose logs -f
gitea | 2022/09/26 14:50:31 cmd/web.go:106:runWeb() [I] Starting Gitea on PID: 1
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/custom
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/data/log
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /etc/gitea/app.ini
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page
gitea | 2022/09/26 14:50:31 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported
gitea | 2022/09/26 14:50:31 cmd/web.go:217:listen() [I] [63314bb7-6] Listen: //0.0.0.0:3000
gitea | 2022/09/26 14:50:31 cmd/web.go:221:listen() [I] [63314bb7-6] AppURL(ROOT_URL): //localhost:3000/
當看到上述日誌的時候可以認為實例已經啟動了,在瀏覽器中輸入 //localhost:3000/ 即可登陸 Gitea 實例進行初始化設置。
登錄 Gitea
首次安裝 Gitea 後,在瀏覽器中輸入 //localhost:3000/ 訪問初始化頁面,按需設置服務器信息。第一個註冊的用戶賬號為管理賬號。
至此已經用 Docker 的方式來成功安裝和運行了 Gitea 實例,接下來就可以使用了,諸如代碼託管、團隊人員管理、配置持續集成工具 Drone、Jenkins 等。