手把手教你玩轉 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-rootless
1.17.2-rootless
dev-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:3000
HTTP 埠,從左到右的順序是從主機映射到 Docker 容器。在此,您可以通過//127.0.0.1:3000
直接訪問到 Gitea 的 Web 介面,或通過反向代理引擎提供更具有擴展性的 SSL 集成,例如 Nginx。2222:2222
SSH 埠。這裡主機側暴露的埠為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 等。