首页 docker

docker环境下gitlab使用记录

发布于: 2020-11-22

docker安装运行gitlab

1
2
3
4
5
6
7
8
9
10
mkdir -p /data/gitlab/etc /data/gitlab/logs  /data/gitlab/data

docker run --name gitlab \
-p 8022:22 -p 8443:443 -p 8080:80 \
--memory 4g \
--restart always \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
-d gitlab/gitlab-ce:12.3.5-ce.0

–name 命令容器的名称

-d 报错容器后台持续运行

-p 暴露端口

-v 挂在目录

配置 GitLab 使用 HTTPS 协议

挂在在容器中配置https

修改配置文件vim /data/gitlab/etc/gitlab.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
###################################################
# 添加外部请求的域名(如果不支持https, 可以改成http)
external_url 'https://gitlab.example.com'
# 修改gitlab对应的时区
gitlab_rails['time_zone'] = 'PRC'

# 开启邮件支持
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_display_name'] = 'GitLab'

# 配置邮件参数
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab@example.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "domian.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
###################################################

#SSL密钥相关配置#
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/data/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/data/gitlab/ssl/gitlab.example.com.key"

配置https主要修改参数

1
2
3
4
5
6
# 域名(https://)
external_url 'https://gitlab.example.com'
# http重定向到https
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/data/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/data/gitlab/ssl/gitlab.example.com.key"

修改配置文件就需要进行重启

1
2
3
gitlab-ctl reconfigure

docker restart gitlab

挂在在宿主nginx上配置https

配置文件修改

1
2
3
4
5
6
7
8
# 禁用`gitlab`内置的`nginx`
nginx['enable'] = false
# 修改成与`nginx`运行时的用户一致
web_server['external_users'] = ['root']
# 监听方式为 tcp
gitlab_workhorse['listen_network'] = "tcp"
# 下面的192.168.1.24为本机IP,根据实际情况修改,不能为 localhost 或者 127.0.0.1,否则 docker 访问不到,8181是默认监听的端口
gitlab_workhorse['listen_addr'] = "192.168.1.24:8181"

修改完配置重启容器

1
2
3
docker exec gitlab gitlab-ctl reconfigure
gitlab-ctl reconfigure
docker restart gitlab

宿主nginx 配置文件gitlab.conf

参考:https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/nginx

需要修改地方

1
2
3
4
upstream gitlab-workhorse {
server unix:/data/gitlab/data/gitlab-workhorse/socket fail_timeout=0;
}
server_name gitlab.example.com;

数据备份

1
docker exec -t gitlab gitlab-rake gitlab:backup:create

命令执行成功后会在 gitlab 容器目录 /var/opt/gitlab/backups 生产文件

数据恢复

确定gitlab版本是否一致

确保将备份备份文件放在 /var/opt/gitlab/backups目录下

1
2
3
4
5
6
7
8
9
10
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 验证是全部停止
gitlab-ctl status

#恢复数据
gitlab-rake gitlab:backup:restore BACKUP=1549850985_2019_02_11_11.4.5
# 启动Gitlab
gitlab-ctl start

汉化

https://gitlab.com/xhang/gitlab

确定版本之后在进行操作

1
2
3
4
5
6
7
8
9
10
11
# 确定安装的版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

# 下载汉化包
wget https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz
# 解压汉化包
tar -xvf gitlab-v12.3.5-zh.tar.gz
# 将汉化文件覆盖掉原文件
cp -rf gitlab-v12.3.5-zh/* /opt/gitlab/embedded/service/gitlab-rails/
# Docker安装需要清理临时的一些文
rm -rf /opt/gitlab/embedded/nodes/*