一、环境准备
- 创建目录结构
mkdir -p /docker/software/gitlab/{data,logs,config} cd /docker/software/gitlab
二、编写 docker-compose.yml
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 社区版镜像
container_name: gitlab
restart: unless-stopped
hostname: 'gitlab.example.com' # 替换为实际域名或IP
environment:
TZ: Asia/Shanghai # 时区设置
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com:8929' # 外部访问地址
gitlab_rails['gitlab_shell_ssh_port'] = 2224 # SSH端口
# 可选配置:邮箱、数据库等
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 465
ports:
- "8929:8929" # HTTP端口(与external_url一致)
- "443:443" # HTTPS端口
- "2224:22" # SSH端口映射
volumes:
- ./config:/etc/gitlab # 配置文件
- ./logs:/var/log/gitlab # 日志文件
- ./data:/var/opt/gitlab # 数据文件
shm_size: '256m' # 共享内存大小
external_url
:GitLab 访问地址,需与端口映射一致。gitlab_shell_ssh_port
:自定义 SSH 端口,避免与宿主机冲突。- 卷映射(
volumes
):持久化配置、日志和数据,防止容器重启后丢失。
三、启动 GitLab 服务
- 启动容器
docker-compose up -d
- 查看启动状态
docker-compose logs -f gitlab # 实时查看日志 docker-compose ps # 确认容器状态为 Healthy
四、访问与初始化
首次访问
设置管理员密码
- 默认用户名:
root
。 - 初始密码文件路径(24 小时后自动删除):
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
- 默认用户名:
登录与配置
五、高级配置(可选)
HTTPS 支持
修改external_url
为https
,并在GITLAB_OMNIBUS_CONFIG
中添加 SSL 证书路径:external_url 'https://gitlab.example.com' nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
将证书文件挂载到容器内
/etc/gitlab/ssl
目录148。备份与恢复
- 手动备份:
docker exec -it gitlab gitlab-backup create
- 定时备份:通过 Crontab 或脚本自动化35。
- 手动备份:
性能优化
- 调整
unicorn
和sidekiq
参数(如并发数、内存限制)148:GITLAB_OMNIBUS_CONFIG: | unicorn['worker_processes'] = 4 sidekiq['concurrency'] = 10
- 调整
六、常见问题
端口冲突
- 若宿主机 80/443 端口被占用,需修改
ports
映射(如8080:80
)143。
- 若宿主机 80/443 端口被占用,需修改
服务启动慢
- 首次启动需初始化数据库和组件,耐心等待或通过日志排查问题3。
数据迁移
- 迁移时需复制
config
、data
、logs
目录,并确保权限正确16。
- 迁移时需复制
其他安装地址:https://zhuanlan.zhihu.com/p/680598666