溫馨提示×

ubuntu gitlab容器化實踐指南

小樊
42
2025-10-14 11:32:29
欄目: 智能運維

Ubuntu下GitLab容器化實踐指南

一、準備工作

1. 更新系統包

在開始前,確保Ubuntu系統包是最新的,避免依賴沖突:

sudo apt update && sudo apt upgrade -y

2. 安裝Docker Engine

GitLab容器化依賴Docker作為容器運行環境。通過以下命令安裝Docker:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) 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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker  # 啟動并設置開機自啟

3. 安裝Docker Compose(可選但推薦)

Docker Compose簡化多容器應用的部署與管理,建議安裝:

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

二、部署GitLab容器

1. 創建數據持久化目錄

GitLab的數據(配置、日志、倉庫)需持久化存儲,避免容器重啟后丟失。在宿主機創建專用目錄:

sudo mkdir -p /srv/gitlab/{config,logs,data}
sudo chown -R 1000:1000 /srv/gitlab  # GitLab容器內用戶UID為1000,需匹配權限

2. 編寫docker-compose.yml文件

/srv/gitlab目錄下創建docker-compose.yml,定義GitLab服務配置:

version: '3.8'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest  # 使用社區版鏡像(生產環境建議指定版本,如25.0.0)
    container_name: gitlab
    restart: always  # 開機自啟
    hostname: 'gitlab.example.com'  # 替換為你的服務器域名或IP
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com'  # 外部訪問URL(若用域名需提前解析DNS)
        gitlab_rails['gitlab_shell_ssh_port'] = 2222  # 修改SSH端口(避免與宿主機SSH沖突)
    ports:
      - '80:80'     # HTTP訪問
      - '443:443'   # HTTPS訪問(若啟用SSL需額外配置)
      - '2222:2222' # SSH端口(與上文GITLAB_OMNIBUS_CONFIG中的端口一致)
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'  # 配置文件掛載
      - '/srv/gitlab/logs:/var/log/gitlab'  # 日志文件掛載
      - '/srv/gitlab/data:/var/opt/gitlab'  # 數據文件掛載(倉庫、用戶數據等核心數據)
    shm_size: '256m'  # 共享內存大?。ń鉀Q大文件上傳時的內存不足問題)

3. 啟動GitLab容器

docker-compose.yml所在目錄執行以下命令,啟動GitLab服務:

cd /srv/gitlab
docker-compose up -d  # 后臺啟動容器

4. 獲取初始root密碼

首次啟動時,GitLab會自動生成root用戶的初始密碼,存儲在容器內的/etc/gitlab/initial_root_password文件中。通過以下命令查看:

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

注意:初始密碼僅在24小時內有效,需及時登錄修改。

三、訪問與配置GitLab

1. 訪問Web界面

打開瀏覽器,輸入http://gitlab.example.com(替換為你的服務器IP或域名),使用root用戶及初始密碼登錄。

2. 配置外部URL(可選)

若需修改訪問URL(如從IP改為域名),可通過以下步驟操作:

docker exec -it gitlab vim /etc/gitlab/gitlab.rb  # 編輯配置文件
# 修改以下內容(將gitlab.example.com替換為你的域名)
external_url 'http://gitlab.example.com'
# 保存退出后,重載配置
docker exec -it gitlab gitlab-ctl reconfigure
docker exec -it gitlab gitlab-ctl restart

3. 配置SSH訪問(可選)

若修改了GitLab的SSH端口(如上文設置為2222),需更新本地SSH配置以正??寺}庫:

# 編輯本地~/.ssh/config文件
vim ~/.ssh/config
# 添加以下內容(替換gitlab.example.com為你的服務器地址)
Host gitlab.example.com
  Port 2222
  User git

之后可通過ssh -T git@gitlab.example.com測試連接。

四、維護與管理

1. 停止與啟動容器

docker-compose stop  # 停止容器
docker-compose start  # 啟動容器

2. 刪除容器(謹慎操作)

若需徹底刪除GitLab容器及數據(數據會丟失),執行:

docker-compose down  # 刪除容器
rm -rf /srv/gitlab/config /srv/gitlab/logs /srv/gitlab/data  # 刪除數據目錄(可選)

3. 備份數據

定期備份/srv/gitlab/data目錄(包含倉庫、用戶信息等核心數據),建議使用rsynctar命令:

sudo tar -czvf /backup/gitlab_data_$(date +%F).tar.gz /srv/gitlab/data

4. 升級GitLab

若需升級GitLab版本,修改docker-compose.yml中的image標簽(如gitlab/gitlab-ce:25.0.0),然后執行:

docker-compose pull  # 拉取新鏡像
docker-compose up -d  # 重啟容器(自動應用新版本)

五、注意事項

1. 端口沖突

  • 若宿主機已使用22端口(SSH),需修改GitLab的SSH端口(如2222),并更新docker-compose.yml中的portsGITLAB_OMNIBUS_CONFIG配置。
  • 確保ports中的端口(80、443、2222)未被其他服務占用。

2. 數據持久化

  • 必須掛載config、logs、data目錄到宿主機,否則容器重啟后數據會丟失。
  • 確保掛載目錄的權限正確(chown -R 1000:1000 /srv/gitlab),避免容器內進程無法寫入。

3. 防火墻配置

若使用UFW防火墻,需開放相關端口:

sudo ufw allow 80/tcp  # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 2222/tcp # SSH(若修改了端口)
sudo ufw reload

4. 生產環境建議

  • 使用特定版本:避免使用latest標簽,指定具體版本(如gitlab/gitlab-ce:25.0.0),確保穩定性。
  • 啟用HTTPS:通過Let’s Encrypt證書配置HTTPS,提升數據傳輸安全性??墒褂?code>gitlab-ctl configure-ssl命令或Nginx反向代理實現。
  • 資源分配:GitLab對CPU、內存要求較高,建議分配至少2核CPU、4GB內存給宿主機。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女