GitLab在Linux上的容器化部署指南(基于Docker)
Docker是GitLab容器化的基礎環境,需先通過包管理器安裝(以Ubuntu為例):
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl openssh-server ca-certificates tzdata perl
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
用于簡化多容器應用的管理(如GitLab+CI/CD):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
驗證安裝:docker-compose --version。
步驟1:創建數據目錄
用于持久化存儲GitLab的配置、日志和數據(避免容器刪除后數據丟失):
mkdir -p /data/gitlab/{config,logs,data}
步驟2:創建docker-compose.yml文件
在/data/gitlab目錄下創建文件,內容如下:
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 使用社區版鏡像(如需企業版,替換為gitlab/gitlab-ee:latest)
container_name: gitlab
restart: always # 容器自動重啟
ports:
- '5480:80' # HTTP端口(Web界面)
- '5443:443' # HTTPS端口
- '5022:22' # SSH端口(默認22,可修改為其他端口)
volumes:
- './config:/etc/gitlab' # 配置文件掛載
- './logs:/var/log/gitlab' # 日志文件掛載
- './data:/var/opt/gitlab' # 數據文件掛載(倉庫、數據庫等)
shm_size: '256m' # 共享內存大?。ń鉀QGitLab運行時的內存不足問題)
步驟3:啟動GitLab容器
進入/data/gitlab目錄,執行:
docker-compose up -d
步驟4:獲取初始root密碼
容器啟動后,進入容器查看初始密碼:
docker exec -it gitlab /bin/bash
cat /etc/gitlab/initial_root_password
exit
步驟5:訪問GitLab Web界面
在瀏覽器輸入http://<服務器IP>:5480,使用root賬號和上述初始密碼登錄。
若未使用Docker Compose,可通過以下命令快速部署:
docker run -d \
--hostname gitlab.example.com \ # 設置容器主機名(需與external_url一致)
-p 8443:443 -p 8080:80 -p 2222:22 \ # 端口映射(自定義宿主機端口)
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \ # 自定義數據目錄
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
注意:啟動后需通過docker exec進入容器獲取初始密碼(同上)。
若需使用自定義域名或IP,需修改GitLab配置文件:
docker exec -it gitlab /bin/bash
vim /etc/gitlab/gitlab.rb
找到external_url配置項,修改為:
external_url 'http://your_server_ip' # 或'https://your_domain.com'
保存后退出,執行以下命令使配置生效:
gitlab-ctl reconfigure
gitlab-ctl restart
GitLab支持Let’s Encrypt免費證書,修改gitlab.rb文件:
letsencrypt['enabled'] = true
letsencrypt['contact_emails'] = ['your.email@example.com'] # 填寫有效郵箱
執行gitlab-ctl reconfigure和gitlab-ctl restart即可自動申請證書。
volumes掛載的宿主機目錄存在且有讀寫權限(如/data/gitlab目錄需由當前用戶擁有)。docker-compose.yml或docker run中的端口映射(如將5480:80改為8080:80)。gitlab.rb中的gitlab_rails['signup_enabled'] = false。