在Debian上通過Docker容器化部署GitLab,可以按照以下步驟進行。這種方法不僅簡化了安裝過程,還便于管理和擴展。
Debian系統:確保你有一個運行中的Debian(推薦使用最新的穩定版,如Debian 12或11)。
Docker已安裝:如果尚未安裝Docker,請先安裝它??梢允褂靡韵旅畎惭b:
sudo apt update
sudo apt install -y docker.io
Docker Compose(可選但推薦):雖然可以使用docker run
命令逐個啟動服務,但使用Docker Compose可以更方便地管理多個容器。
安裝Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.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的配置和數據:
sudo mkdir -p /opt/gitlab/config
sudo mkdir -p /opt/gitlab/logs
sudo mkdir -p /opt/gitlab/data
docker-compose.yml
在項目目錄中創建一個docker-compose.yml
文件,并添加以下內容:
version: '3.7'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com' # 替換為你的域名或IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 替換為你的訪問URL
gitlab_rails['lfs_enabled'] = true
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 可選,更改SSH端口
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '/opt/gitlab/config:/etc/gitlab'
- '/opt/gitlab/logs:/var/log/gitlab'
- '/opt/gitlab/data:/var/opt/gitlab'
說明:
external_url
:設置GitLab的外部訪問URL,請根據你的實際情況修改。gitlab_rails['lfs_enabled']
:啟用Git LFS(大文件存儲),根據需要啟用或禁用。80
和 443
:HTTP和HTTPS訪問。22
:SSH訪問(可選,如果需要自定義SSH端口,請同時修改gitlab_rails['gitlab_shell_ssh_port']
)。在包含docker-compose.yml
的目錄下運行以下命令:
sudo docker-compose up -d
這將下載GitLab鏡像(如果尚未下載)并啟動所有服務。
如果你的服務器啟用了防火墻(如ufw
),需要允許HTTP(80)、HTTPS(443)和SSH(22)端口的流量。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw reload
打開瀏覽器,訪問http://gitlab.example.com
(替換為你的服務器地址)。首次訪問時,GitLab會引導你進行初始設置,包括設置管理員密碼和配置電子郵件等。
如果你更喜歡手動管理Docker容器,可以按照以下步驟操作:
sudo docker pull gitlab/gitlab-ce:latest
創建用于存儲GitLab數據、配置和日志的Docker卷:
sudo mkdir -p /opt/gitlab/config
sudo mkdir -p /opt/gitlab/logs
sudo mkdir -p /opt/gitlab/data
sudo docker run --detach \
--hostname 'gitlab.example.com' \
--restart always \
-p 80:80 \
-p 443:443 \
-p 22:22 \
--name gitlab \
-v '/opt/gitlab/config:/etc/gitlab' \
-v '/opt/gitlab/logs:/var/log/gitlab' \
-v '/opt/gitlab/data:/var/opt/gitlab' \
gitlab/gitlab-ce:latest
說明:
參數與docker-compose.yml
中的配置類似,確保端口映射和卷掛載正確。
同樣,訪問http://gitlab.example.com
進行初始設置。
為了提高安全性,建議為GitLab配置SSL證書??梢允褂肔et’s Encrypt免費獲取證書,并通過Docker容器進行管理。
安裝Certbot
sudo apt install certbot python3-certbot-dns-cloudflare # 以Cloudflare為例,根據你的DNS提供商選擇合適的插件
創建Certbot配置目錄
sudo mkdir -p /etc/letsencrypt
sudo mkdir -p /var/www/certbot
創建Certbot的Docker Compose服務
在docker-compose.yml
中添加Certbot服務:
certbot:
image: certbot/dns-cloudflare
volumes:
- '/etc/letsencrypt:/etc/letsencrypt'
- '/var/www/certbot:/var/www/certbot'
environment:
- GOOGLE_APPLICATION_CREDENTIALS=/etc/letsencrypt/credentials.json
- DNS_CLOUDFLARE_EMAIL=your-email@example.com
- DNS_CLOUDFLARE_API_TOKEN=your_api_token
替換your-email@example.com
和your_api_token
為你的Cloudflare賬戶信息。
獲取證書
運行Certbot命令獲取證書:
sudo docker-compose run --rm certbot certonly --webroot --webroot-path=/var/www/certbot --email your-email@example.com --agree-tos --no-eff-email -d gitlab.example.com
配置GitLab使用SSL
編輯GitLab配置文件:
sudo nano /opt/gitlab/config/gitlab.rb
添加或修改以下行:
external_url 'https://gitlab.example.com'
nginx['redirect_http_to_https'] = true
保存并退出,然后重新配置并重啟GitLab:
sudo docker-compose exec gitlab gitlab-ctl reconfigure
sudo docker-compose restart gitlab
定期備份GitLab的數據非常重要??梢允褂肈ocker Compose運行備份任務:
sudo docker-compose run --rm gitlab gitlab-rake gitlab:backup:create
備份文件將存儲在掛載的/opt/gitlab/data/backups
目錄中?;謴蜁r,可以參考官方文檔進行操作。
通過以上步驟,你可以在Debian系統上使用Docker容器化部署GitLab。這種方法不僅簡化了安裝和管理過程,還提高了系統的可移植性和可擴展性。根據實際需求,你可以進一步自定義配置,如調整資源限制、添加監控等。
如果在部署過程中遇到問題,建議參考GitLab官方文檔獲取更多詳細信息和故障排除指南。