docker部署
1、镜像
1
2
3
4
5
6
7
8
9
| docker run --detach \
--hostname 192.168.50.7 \
--publish 9043:443 --publish 9080:80 --publish 9022:22 \
--name gitlab \
--restart always \
--volume /mnt/nfs/gitlab/config:/etc/gitlab \
--volume /mnt/nfs/gitlab/logs:/var/log/gitlab \
--volume /mnt/nfs/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
|
参数说明:
- hostname:是访问地址,如果是公网访问,需要写公网的ip
- publish:分别对应443 80 22端口
- volume:挂载地址,前面是服务器地址,后面对应的镜像内地址
注意事项:10080端口不能用,浏览器认为10080端口不安全
2、修改配置文件
进入容器
1
| docker exec -it gitlab /bin/bash
|
修改配置文件
1
| vi /etc/gitlab/gitlab.rb
|
新增配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #gitlab访问地址,可以写域名。如果端口不写的话默认为80端口,注意此处不能写端口,不然无法访问
external_url 'http://192.168.50.7'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.50.7'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 10022
#时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
#开启备份功能
gitlab_rails['manage_backup_path'] = true
#备份文件的权限
gitlab_rails['backup_archive_permissions'] = 0644
#保存备份 7 天
gitlab_rails['backup_keep_time'] = 604800
|
生效配置:
1
2
3
4
| # 容器内执行
gitlab-ctl reconfigure
# 容器外执行
docker exec 容器名或容器ID gitlab-ctl reconfigure
|
修改gitlab.yaml中端口为9080
重启gitlab服务
备份
手动备份
1
2
3
4
5
6
| # 第一种进行入容器执行命令的方法进行手工备份
docker exec -it 容器名或容器id bash # 进入容器
gitlab-rake gitlab:backup:create # 执行gitlab备份命令
# 第二种直接使用外部命令执行,一次完成
docker exec 容器名或容器id gitlab-rake gitlab:backup:create
|
自动备份
脚本
1
2
3
4
5
6
| #!/bin/bash
case "$1" in
start)
docker exec gitlab gitlab-rake gitlab:backup:create
;;
esac
|
定时器
1
2
3
| crontab -e
# 新增下面一行,每天2点备份
0 2 * * * /mnt/nfs/gitlab.backup.sh start
|
常见问题
1、gitLab的root密码怎么查看
1
2
3
4
| # 进入容器
docker exec -it gitlab /bin/bash
# 查看密码
cat /etc/gitlab/initial_root_password
|
2、CI/CD此作业已阻塞,因为该项目没有分配任何可用Runner。
解决办法
- 编辑runner设置可以执行未设置tag的标签
- 或者在gitlab-ci.yml文件中设置