一、GitLab 容器化部署
1. 準(zhǔn)備工作
- 確保已安裝 Docker 和 Docker Compose
- 建議服務(wù)器配置:4核CPU/8GB內(nèi)存/50GB存儲(最低要求)
- 開放端口:80(HTTP)、443(HTTPS)、22(SSH)
2. 使用 Docker Compose 部署 GitLab
創(chuàng)建 docker-compose.yml
文件:
version: '3.6' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: 'gitlab.yourdomain.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.yourdomain.com' gitlab_rails['gitlab_shell_ssh_port'] = 2222 ports: - "80:80" - "443:443" - "2222:22" volumes: - ./gitlab/config:/etc/gitlab - ./gitlab/logs:/var/log/gitlab - ./gitlab/data:/var/opt/gitlab
3. 啟動(dòng) GitLab 服務(wù)
docker-compose up -d
4. 初始訪問
- 首次訪問需等待約2-5分鐘初始化
- 訪問
http://your-server-ip
- 初始密碼存儲在容器內(nèi):
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
二、GitLab Runner 安裝與配置
1. 部署 GitLab Runner 容器
docker run -d --name gitlab-runner \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v ./gitlab-runner/config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest
2. 注冊 Runner 到 GitLab
- 進(jìn)入 GitLab 管理界面
- 導(dǎo)航到
Admin Area > Overview > Runners
- 獲取注冊令牌
執(zhí)行注冊命令:
docker exec -it gitlab-runner gitlab-runner register \ --non-interactive \ --url "http://gitlab.yourdomain.com/" \ --registration-token "YOUR_REGISTRATION_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner" \ --tag-list "docker,linux" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"
3. 高級配置
編輯 ./gitlab-runner/config/config.toml
:
concurrent = 4 check_interval = 0 [[runners]] name = "docker-runner" url = "http://gitlab.yourdomain.com/" token = "YOUR_RUNNER_TOKEN" executor = "docker" [runners.docker] tls_verify = false image = "alpine:latest" privileged = true disable_cache = false volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"] shm_size = "0"
三、CI/CD 流水線實(shí)戰(zhàn)示例
1. 創(chuàng)建 .gitlab-ci.yml
文件
stages: - build - test - deploy build_job: stage: build script: - echo "Building the application..." - docker build -t myapp . tags: - docker test_job: stage: test script: - echo "Running tests..." - docker run myapp npm test tags: - docker deploy_job: stage: deploy script: - echo "Deploying to production..." - docker-compose -f docker-compose.prod.yml up -d only: - main tags: - docker
2. 常用維護(hù)命令
# 查看 GitLab 日志 docker logs -f gitlab # 重啟 Runner docker restart gitlab-runner # 更新容器鏡像 docker-compose pull && docker-compose up -d # 備份數(shù)據(jù) tar -czvf gitlab_backup.tar.gz ./gitlab
四、性能優(yōu)化建議 ⚡
- 資源配置調(diào)整:
- 為 GitLab 容器分配至少 4GB 內(nèi)存
- 設(shè)置 CPU 限制:
--cpus=2
- 定期維護(hù):
- 執(zhí)行垃圾回收:
gitlab-rake gitlab:cleanup:project_uploads
- 清理 Docker 緩存:
docker system prune
- 執(zhí)行垃圾回收:
- 高可用方案:
- 考慮使用 PostgreSQL 外部數(shù)據(jù)庫
- 配置 Redis 獨(dú)立實(shí)例
- 安全加固:
- 定期更新容器鏡像
- 配置 HTTPS 訪問
- 限制 Runner 網(wǎng)絡(luò)訪問權(quán)限