- 生成证书
参考 https://www.jianshu.com/p/1163d1ae8029 - 创建数据目录
mkdir /gitlab
cd gitlab; mkdir data config logs
- 容器化启动gitlab
docker run -tid \
--hostname gitlab.example.cn \ // 此处为访问的域名,也可以填写IP地址,也可以不填。如果有多个容器在同一个子网中,则容器间可以通过hostname互通。
-p 443:443 \
-p 80:80 \
-p 22:22 \
--name gitlab \
--restart always\
-v /gitlab/config:/etc/gitlab \
-v /gitlab/logs:/var/log/gitlab \
-v /gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
注: 上面的端口号映射,建议内外端口号一致。如果不一致,可能会导致webhook触发不可用。
例如,如果端口映射为-p 8080:80
,并在gitlab中配置了webhook地址,指定push事件触发。提交代码后gitlab会向webhook地址发送一条消息,并带上相关的push事件内容,内容中包含了提交的分支相关的信息,此时的端口号为80端口,因为gitlab看到的自己的服务端口为80端口,此时webhook服务到80端口拉取代码时就会失败。因为实际上host对外提供的服务是8080端口。当然,也可以修改gitlab.rb配置文件,修改gitlab的服务端口为8080,然后端口映射为8080:8080,避免占用主机的80端口。
默认的用户名为root, 密码位于容器内的:/etc/gitlab/initial_root_password
文件下。登陆后可以在右上角的个人Preference处修改密码。可以使用该账号创建其他账户。
配置webook的报错解决: 报错“requests to local network are not allowed.”,需要使用管理账号登陆,将webhook的地址或者IP填入下面位置。
image.png
域名解析配置: 只需要在容器内/etc/hosts中配置域名解析,无需在主机上配置。
- 配置证书
拷贝步骤1生成的证书到配置文件目录下。
mkdir /gitlab/config/ssl; cp xxx.key xxx.crt /gitlab/config/ssl
编辑/gitlab/config/gitlab.rb
文件,修改以下内容
external_url 'https://gitlab.example.cn'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/xxx.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/xxx.key"
- 重新配置gitlab
docker exec gitlab gitlab-ctl reconfigure
- 前端访问gitlab
如果配置了域名,需要配置域名解析;如果是IP,则直接访问IP即可。如果要使用https访问,则需要将ca.crt
证书加入到系统的根证书中。 - 最后,如果你想只允许用户使用https访问,可以参考下面的文章配置一个nginx反向代理。
网友评论