
Gitlab
20230502
拉取命令
docker pull gitlab/gitlab-ce:15.9.6-ce.0
创建容器命令
1.创建容器
docker run \
-itd \
-p 325:325 \
-p 326:22 \
-v /db1/gitlab/etc:/etc/gitlab \
-v /db1/gitlab/log:/var/log/gitlab \
-v /db1/gitlab/opt:/var/opt/gitlab \
--network yyy \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce:15.9.6-ce.0
2、启动Gitlab容器
看上面命令!
| 命令 | 描述 |
| — | — |
| -i | 以交互模式运行容器,通常与 -t 同时使用命令解释 |
| -t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
| -d | 后台运行容器,并返回容器ID |
| -p 325:80 | 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口 |
| -p 326:22 | 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口 |
| -v /home/gitlab/etc:/etc/gitlab | 将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab-test/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样 |
| –restart always | 容器自启动 |
| –privileged=true | 让容器获取宿主机root权限 |
| –name gitlab | 设置容器名称为gitlab |
| gitlab/gitlab-ce | 镜像的名称,这里也可以写镜像ID |
接下来的配置请在容器内进行修改,不要在挂载到宿主机的文件上进行修改。否则可能出现配置更新不到容器内,或者是不能即时更新到容器内,导致gitlab启动成功,但是无法访问
3、修改配置
#进容器内部
docker exec -it gitlab /bin/bash
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb
#网址配置
external_url 'https://gitlab.itzaj.com:325/' #使用https
external_url 'http://gitlab.itzaj.com:325/' #使用http
#上面是二选一
#配置SSH
nginx['ssl_certificate'] = "/etc/gitlab/gitlab.itzaj.com.crt" #如果不使用https 就注释此行
nginx['ssl_certificate_key'] = "/etc/gitlab/gitlab.itzaj.com.key" # 如果不使用https 就注释此行
gitlab_rails['gitlab_shell_ssh_port'] = 326 #如果自定义了ssh端口,在这设置以后就能在ssh clone地址处正确显示# 如果不使用https 就注释此行
letsencrypt['enable'] = false #不需要letsencrypt自动签名 #如果不使用https 就注释此行
nginx['listen_port'] = 325 #如果不使用https 就注释此行
nginx['listen_https'] = true # 如果不使用https 就注释此行
#配置邮件 如果不想使用邮箱 就 直接注释 下面邮件的全部
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "zaj1900540070@163.com"
gitlab_rails['smtp_password'] = "RDDWWUFXVQGGIQJD" # 这可不是邮箱的密码 是授权码
gitlab_rails['smtp_domain'] = "smtp.163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'zaj1900540070@163.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
#关闭prometheus 太消耗性能了
prometheus['enable'] = false
# 让配置生效
gitlab-ctl reconfigure
```plain
#重启gitlab
gitlab-ctl restart
#退出容器
exit
4、浏览器访问
路径访问:http://192.168.124.194:9980/
机器配置要大于4g,否则很容易启动不了,报502
第一次访问,会让修改root密码
修改后以root用户登录即可
5、 修改root密码
# 进入容器内部
docker exec -it gitlab /bin/bash
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为DFgo1234....
user.password='DFgo1234....'
# 保存
user.save!
# 退出
exit
验证邮箱
第一步:执行如下命令进入到控制台中:
docker exec -it gitlab /bin/bash
gitlab-rails console
第二步:执行发送邮件脚本测试发送邮件是否正常:
Notify.test_email('1900540070@qq.com', 'title', 'body').deliver_now
备份恢复
# 首先重新安装Docker 部署gitlab 和之前的命令一模一样
#然后 启动 等待数据跑完 cpu占用低的时候 过个十分钟后
#进入容器
docker exec -it gitlab bash
# 先停止
gitlab-ctl stop
# 把之前的 gitlab.rb 放回去 执行配置
gitlab-ctl reconfigure
# 启动
gitlab-ctl start
#这时候 已经能访问到了
#然后我们把备份放到备份文件夹 /db1/gitlab/opt/backups
#停止数据库相关
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#执行回复命令
gitlab-rake gitlab:backup:restore BACKUP=1665366086_2022_10_10_15.4.0
#这里完整文件是 1708684392_2024_02_23_16.6.2_gitlab_backup.tar 去掉后缀使用
ye
Gitlab-ce数据还原时发生PostgreSQL异常
异常信息如下:
Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm
ERROR: must be owner of extension btree_gist
ERROR: must be owner of extension btree_gist
ERROR: must be owner of extension pg_trgm
解决方法:
1、修改postgresql相关配置
# 修改以下配置文件,修改端口监听地址,默认监控localhost,* 代表all
$ vim /var/opt/gitlab/postgresql/data/postgresql.conf
listen_addresses = '*'
# 以下配置文件新增以下两行
$ vim /var/opt/gitlab/postgresql/data/pg_hba.conf
local all all trust
host all all 127.0.0.1/32 trust
2、重启gitlab服务
$ gitlab-ctl restart
3、修改
$ su - gitlab-psql
$ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
psql (9.2.8)
Type "help" for help.
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
ALTER ROLE
gitlabhq_production=# \q
4、重新执行数据恢复命令后正常
本文转自 https://blog.csdn.net/Hu_wen/article/details/125889489,如有侵权,请联系删除。