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,如有侵权,请联系删除。