GitLab在Linux上的容器化实践指南
在开始部署前,需完成以下基础环境配置:
apt、CentOS的yum)或Docker官方脚本安装最新稳定版Docker;安装完成后,使用docker --version验证安装是否成功。curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose下载二进制文件,赋予执行权限(chmod +x /usr/local/bin/docker-compose),并通过docker-compose --version验证安装。/srv/gitlab/config、/srv/gitlab/logs、/srv/gitlab/data),分别用于存储GitLab的配置文件、日志和核心数据。docker run命令快速部署通过单条命令直接启动GitLab容器,适用于简单测试场景:
docker run -d \
--hostname gitlab.example.com \ # 容器主机名(需与后续配置一致)
-p 443:443 -p 80:80 -p 22:22 \ # 映射HTTPS、HTTP、SSH端口
--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 # 使用社区版镜像(企业版替换为gitlab-ee)
说明:若宿主机22端口被占用,可将SSH端口映射改为-p 60000:22,后续需通过ssh -p 60000 root@gitlab.example.com访问。
docker-compose编排部署通过docker-compose.yml文件管理配置,更适合生产环境的多容器场景:
docker-compose.yml文件:version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: gitlab.example.com
ports:
- '5480:80' # Web界面端口
- '5443:443' # HTTPS端口
- '5022:22' # SSH端口
volumes:
- './config:/etc/gitlab' # 相对路径挂载(当前目录下的config目录)
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
shm_size: '256m' # 分配共享内存(解决页面加载慢问题)
docker-compose.yml所在目录执行docker-compose up -d,后台启动GitLab容器。docker exec -it gitlab cat /etc/gitlab/initial_root_password
http://<服务器IP>:5480(若修改了端口映射,则使用对应端口),使用root账号和初始密码登录。gitlab.rb配置文件(vim /etc/gitlab/gitlab.rb),设置external_url为实际访问地址(如http://gitlab.example.com或https://gitlab.example.com);若启用HTTPS,需添加Let’s Encrypt配置:letsencrypt['enabled'] = true
letsencrypt['contact_emails'] = ['your.email@example.com']
修改完成后,执行gitlab-ctl reconfigure使配置生效,再通过gitlab-ctl restart重启服务。
docker ps(确认GitLab容器是否运行)。docker stop gitlab、docker restart gitlab。docker exec -it gitlab /bin/bash(用于执行配置修改、备份等操作)。docker logs -f gitlab(实时查看GitLab运行日志,便于排查问题)。docker exec -t gitlab gitlab-rake gitlab:backup:create(将备份文件保存到/var/opt/gitlab/backups目录,可通过docker cp拷贝到宿主机)。config、logs、data目录到宿主机,避免容器删除后数据丢失。gitlab.rb中的gitlab_rails['gitlab_signup_enabled'] = false)。shm_size(共享内存大小),避免因内存不足导致页面加载缓慢;企业版GitLab对资源要求更高,建议分配至少4GB内存。