# 如何使用docker-compose安裝GitLab
## 前言
GitLab 是一個功能強大的開源代碼托管平臺,提供了完整的 DevOps 工具鏈。使用 Docker Compose 部署 GitLab 可以快速搭建一套完整的開發環境,同時保持系統的隔離性和可移植性。本文將詳細介紹如何使用 docker-compose 安裝和配置 GitLab。
## 環境準備
### 系統要求
- Linux 服務器(推薦 Ubuntu 20.04+/CentOS 7+)
- Docker 20.10.0+
- Docker Compose 1.29.0+
- 至少 4GB 內存(生產環境建議 8GB+)
- 至少 2CPU 核心
### 安裝依賴
```bash
# 安裝Docker
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
# 安裝Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
在項目目錄中創建 docker-compose.yml
文件:
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
hostname: 'gitlab.example.com' # 修改為你的域名
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com' # 修改為你的域名
# 郵件配置示例
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "username"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
ports:
- "80:80"
- "443:443"
- "22:22"
volumes:
- ./gitlab/config:/etc/gitlab
- ./gitlab/logs:/var/log/gitlab
- ./gitlab/data:/var/opt/gitlab
restart: always
networks:
- gitlab_net
networks:
gitlab_net:
driver: bridge
鏡像選擇:
gitlab/gitlab-ce:latest
- 社區版(推薦)gitlab/gitlab-ee:latest
- 企業版(需許可證)端口映射:
數據卷:
/etc/gitlab
: 配置文件/var/log/gitlab
: 日志文件/var/opt/gitlab
: 應用數據environment:
GITLAB_OMNIBUS_CONFIG: |
# 禁用用戶注冊
gitlab_rails['gitlab_signup_enabled'] = false
# 配置備份
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800 # 保留7天
# 性能優化
unicorn['worker_processes'] = 4
postgresql['shared_buffers'] = "256MB"
# 啟動服務(后臺運行)
docker-compose up -d
# 查看日志
docker-compose logs -f gitlab
首次啟動可能需要5-10分鐘完成初始化,可以通過以下命令檢查狀態:
docker exec -it gitlab gitlab-ctl status
http://your-server-ip
(或配置的域名)./gitlab/config/gitlab.rb
./gitlab/data
./gitlab/logs
docker exec -it gitlab gitlab-backup create
# 停止相關服務
docker exec -it gitlab gitlab-ctl stop unicorn
docker exec -it gitlab gitlab-ctl stop sidekiq
# 恢復備份(將BACKUP_TIMESTAMP替換為實際時間戳)
docker exec -it gitlab gitlab-backup restore BACKUP=BACKUP_TIMESTAMP
# 重啟服務
docker exec -it gitlab gitlab-ctl restart
# 停止并刪除舊容器
docker-compose down
# 拉取新鏡像
docker-compose pull
# 重新啟動
docker-compose up -d
# 清理Docker系統
docker system prune
# 清理GitLab緩存
docker exec -it gitlab gitlab-rake cache:clear
通常是由于服務未完全啟動,等待幾分鐘后刷新或檢查日志:
docker-compose logs gitlab | grep -i error
修改docker-compose.yml添加資源限制:
deploy:
resources:
limits:
memory: 8G
docker exec -it gitlab gitlab-rails console
> Notify.test_email('test@example.com', 'Test', 'Test Body').deliver_now
啟用HTTPS:
gitlab.rb
中配置 Let’s Encryptletsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
定期備份:
# 每周自動備份
0 2 * * 0 docker exec gitlab gitlab-backup create
更新策略:
通過Docker Compose部署GitLab具有以下優勢: - 快速部署和升級 - 環境隔離,避免污染主機 - 方便備份和遷移 - 靈活的資源配置
本文介紹了從基礎安裝到高級配置的全過程,您可以根據實際需求調整配置參數。對于生產環境,建議: 1. 使用專用數據卷 2. 配置監控和告警 3. 實施定期維護計劃
命令 | 說明 |
---|---|
docker-compose ps |
查看服務狀態 |
docker-compose restart gitlab |
重啟GitLab |
docker exec -it gitlab bash |
進入容器 |
docker exec gitlab gitlab-ctl reconfigure |
重新加載配置 |
”`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。