ubuntu 22.04 安装 gitlab
1. 前置条件
。已安装 Docker(建议 20.10 + 版本)和 Docker Compose(可选,用于简化配置)。。服务器至少 4GB 内存(生产环境建议 8GB+,否则可能因内存不足启动失败)。。开放必要端口:80(HTTP)、443(HTTPS)、22(SSH,若需通过 SSH 访问仓库)。
2. 安装 Docker(若未安装):
sudo apt update && sudo apt install -y docker.io docker-compose-pluginsudo systemctl enable --now dockersudo usermod -aG docker $USER # 非root用户添加docker权限(需重启生效)
步骤 1:准备数据持久化目录
# 创建宿主机目录(可自定义路径,建议放在大磁盘下)sudo mkdir -p /data/gitlab/{config,data,logs}# 设置权限(避免容器内进程无权限读写,GitLab容器内默认用户ID为998)sudo chmod -R 777 /data/gitlab # 简单粗暴(测试环境可用)# 生产环境建议更精细:sudo chown -R 998:998 /data/gitlab
步骤 2:启动 GitLab 容器
方式 1:直接用docker run命令
一行命令启动,适合快速测试:
docker run --detach \--hostname gitlab.example.com # 替换为你的域名或服务器IP(如192.168.1.100)\--publish 80:80 \ # 宿主机80端口映射到容器80(HTTP)--publish 443:443 \ # 宿主机443端口映射到容器443(HTTPS,若需)--publish 2222:22 \ # 宿主机2222端口映射到容器22(SSH,避免与宿主机22冲突)--name gitlab \ # 容器名称--restart always \ # 开机自启--volume /data/gitlab/config:/etc/gitlab \ # 配置文件挂载--volume /data/gitlab/data:/var/opt/gitlab \ # 数据挂载--volume /data/gitlab/logs:/var/log/gitlab \ # 日志挂载gitlab/gitlab-ce:latest # 官方社区版镜像(latest为最新版,可指定版本如16.0.0-ce.0)
方式 2:用 Docker Compose(推荐,便于管理)
1.创建docker-compose.yml文件:
version: '3.8'
services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlab.example.com # 替换为你的域名/IPenvironment:# 核心配置:外部访问URL(必须设置,否则页面跳转异常)GITLAB_OMNIBUS_CONFIG: |external_url 'http://gitlab.example.com' # 替换为你的URL(http/https)# 若需SSH访问,指定SSH端口(与宿主机映射的端口一致)gitlab_rails['gitlab_shell_ssh_port'] = 2222ports:- "80:80" # HTTP- "443:443" # HTTPS- "2222:22" # SSHvolumes:- /data/gitlab/config:/etc/gitlab- /data/gitlab/data:/var/opt/gitlab- /data/gitlab/logs:/var/log/gitlab# 可选:限制资源(避免GitLab占用过多内存)deploy:resources:limits:cpus: '2'memory: 8G
2.启动容器:
docker compose up -d # 后台启动
步骤 3:首次访问与配置
1.等待启动完成:
GitLab 启动较慢(首次需初始化数据库等),可通过日志查看进度:
docker logs -f gitlab # 实时查看日志,出现"gitlab Reconfigured!"即启动完成
2.访问 GitLab:
浏览器打开你设置的external_url(如http://192.168.1.100),首次访问会提示设置root用户的密码(需牢记)。
3.登录:
输入root用户名和刚才设置的密码,即可进入 GitLab 控制台。
关键配置说明
1.修改外部 URL:
若需修改访问地址,编辑/data/gitlab/config/gitlab.rb(宿主机目录):
sudo vim /data/gitlab/config/gitlab.rb
找到并修改:
external_url 'http://新的域名或IP'
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 若SSH端口变更
然后进入容器执行重新配置:
docker exec -it gitlab gitlab-ctl reconfigure
2.配置 HTTPS:
需提前准备 SSL 证书(如server.crt和server.key),将证书放到宿主机/data/gitlab/config/ssl/目录,然后修改gitlab.rb:
external_url 'https://gitlab.example.com'
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
重新配置生效。
3.邮件通知:
编辑gitlab.rb配置 SMTP(以 QQ 邮箱为例):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "你的QQ邮箱@qq.com"
gitlab_rails['smtp_password'] = "邮箱授权码" # 非登录密码,需在邮箱设置中获取
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "你的QQ邮箱@qq.com"
注意事项
1.端口冲突:若宿主机 80/443/22 端口已被占用,需修改映射端口(如-p 8080:80将宿主机 8080 映射到容器 80),同时更新external_url(如http://ip:8080)。
2.内存不足:若启动失败或频繁崩溃,检查内存是否≥4GB,可通过free -h查看,不足时建议增加内存或启用 Swap。
3.数据备份:直接备份宿主机/data/gitlab目录即可(tar -zcvf gitlab_backup.tar.gz /data/gitlab)。
4.版本更新:停止容器→删除容器→拉取新镜像→重新启动(数据目录不变则数据保留)。