CentOS7.9.下使用官方Docker镜像安装Gitlab

环境:

Author: dusuanyun

Date: 2021-07-21,2021-8-14更新

OS: CentOS7.9 mini core

Docker: 20.10.7

gitlab-ce: 14.0.6-ce.0

相关文档:

官方Docker说明:https://hub.docker.com/r/gitlab/gitlab-ce

官网的说明:https://docs.gitlab.com/omnibus/docker/

启用SSL的HTTPS:https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https

请先看完全篇了解整体流程,再开始操作,因为过程中有反复!!!

1.创建目录以便docker容器进行挂载:

        例如:home/DATA/Gitlab/

2.下载最新版本镜像并运行: docker pull gitlab/gitlab-ce 此时的最新版就是14.0.6-ce.0

docker run --detach \

  --hostname gitlab \

  --publish 10443:443 --publish 10080:80 --publish 10022:22 \

  --name iGitlab \

  --restart always \

  --volume /home/DATA/Gitlab/config:/etc/gitlab \

  --volume /home/DATA/Gitlab/logs:/var/log/gitlab \

  --volume /home/DATA/Gitlab/data:/var/opt/gitlab \

  gitlab/gitlab-ce:latest

命令运行后,自动创建config logs data目录.

本文档中所有docker命令没有使用sudo前缀,是因为配置了当前用户可以直接运行,如果你没有配置过则需要加sudo.

命令说明:

        --name 是指创建的容器的名称;

        --hostname 是指容器里面的主机名;

        --publish 将宿主机的端口10443/10080/10022分别映射到容器内主机的443/80/22端口

Docker里的Gitlab首次启动较慢,大约3-4分钟!

3.防火墙放行使用的端口:

firewall-cmd --zone=public --add-port=10080/tcp --permanent

firewall-cmd --zone=public --add-port=10022/tcp --permanent

firewall-cmd --zone=public --add-port=10443/tcp --permanent

firewall-cmd --reload

4.访问Web界面:

        运行成功后:访问http://宿主机的IP:10080/ 即可看到登录界面

使用苹果的浏览器Safari浏览器可以访问:

CentOS7.9.下使用官方Docker镜像安装Gitlab_第1张图片

         注意,谷歌浏览器访问会阻挡10080端口,例如:

CentOS7.9.下使用官方Docker镜像安装Gitlab_第2张图片

5.查看创建的root的默认密码

        docker logs iGitlab | grep password

其中有一行如下:

        Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.

进入/home/DATA/Gitlab/config查看root密码:

[root@server ~]# cd /home/DATA/Gitlab/config
[root@server config]# ls
gitlab.rb            initial_root_password  ssh_host_ecdsa_key.pub  ssh_host_ed25519_key.pub  ssh_host_rsa_key.pub
gitlab-secrets.json  ssh_host_ecdsa_key     ssh_host_ed25519_key    ssh_host_rsa_key          trusted-certs
[root@server config]# cat initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: 56L6lT/XrR23LscSANda16Q1zCb627qJ+d/n7FB/xh8=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
[root@server config]# 

就可以用Root和上面的密码进行登录了,登录进来以后:

CentOS7.9.下使用官方Docker镜像安装Gitlab_第3张图片

6.公司自用,关闭用户自己注册的功能!

        界面提示允许开放注册,我们点击【View settings】进行关闭,公司自用开放注册不安全!!!  下面的界面我使用了网页翻译功能!

CentOS7.9.下使用官方Docker镜像安装Gitlab_第4张图片

       然后点击下面的【保存修改】即可!然后退出系统重新登录后就发现不允许自行注册用户了。

7.登录后设置自己使用的界面为中文环境

CentOS7.9.下使用官方Docker镜像安装Gitlab_第5张图片

 CentOS7.9.下使用官方Docker镜像安装Gitlab_第6张图片

 CentOS7.9.下使用官方Docker镜像安装Gitlab_第7张图片

        然后,保存修改,然后刷新浏览器,就可以看到变为中文界面了!

8.至此,搭建其实已经结束了。

        不过因为可恶的谷歌浏览器会阻止不常用的端口的访问,可以重新配置新的端口

9.强制删除刚刚部署的容器:

         docker rm -f iGitlab

10.使用新的端口重新部署容器

因为10080端口会被谷歌浏览器阻挡,所以端口修改为:1443、1080、1022

docker run --detach  --hostname gitlab    --publish 1443:443 --publish 1080:80 --publish 1022:22   --name iGitlab   --restart always   --volume /home/DATA/Gitlab/config:/etc/gitlab   --volume /home/DATA/Gitlab/logs:/var/log/gitlab   --volume /home/DATA/Gitlab/data:/var/opt/gitlab   gitlab/gitlab-ce:latest

11.重新放开新的端口号:

firewall-cmd --zone=public --add-port=1080/tcp --permanent

firewall-cmd --zone=public --add-port=1022/tcp --permanent

firewall-cmd --zone=public --add-port=1443/tcp --permanent

firewall-cmd --reload

至此使用1080端口就可以使用谷歌浏览器访问了,删除旧的开放的端口:

[root@server ~]# firewall-cmd --zone=public --remove-port=10080/tcp --permanent
success
[root@server ~]# firewall-cmd --zone=public --remove-port=10022/tcp --permanent
success
[root@server ~]# firewall-cmd --zone=public --remove-port=10443/tcp --permanent
success
[root@server ~]# firewall-cmd --reload

12.gitlab生成的默认代码仓库地址修改:

        参考:https://blog.csdn.net/qq_34313827/article/details/80395190

        例如:

        ssh://git@gitlab/aladin-projs/ald-uni.git gitlab是容器名,外网不可访问

        http://gitlab/aladin-projs/ald-uni.git gitlab是容器名,外网不可访问

ssh的方式永久解决:

修改gitlab.rb文件(关键步骤,文件在/home/DATA/Gitlab/config/gitlab.rb)

cd /home/DATA/Gitlab/config目录下,编辑vim gitlab.rb 修改生成git的ssh克隆地址:

// 修改如下语句
# gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com' 66行,取消注释,ssh.host_example.com==》你自己的公网IP地址或者域名

# 配置1022端口

gitlab_rails['gitlab_shell_ssh_port'] = 1022        632行,原值为注释行,值为22

重启容器:

        docker restart iGitlab

http的方式永久解决:

31 ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
32 external_url 'http://111.xxx.zzz.25:1080'                    // 从外网可以访问的地址及端口,xxx和zzz为敏感信息处理
33 
34 ## Roles for multi-instance GitLab
....省略行......  
1342 ##! **Override only if you use a reverse proxy**
1343 ##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port
1344 nginx['listen_port'] = 80  // 注意此处必须改,并且是1080端口映射到容器内的端口!!!如果此行维持原样nginx会监听容器内的1080端口,导致通信故障!
1345 

重启容器:docker restart iGitlab 即可!

刷新浏览器,看到正常了:

CentOS7.9.下使用官方Docker镜像安装Gitlab_第8张图片

 PS:

1.限制内存使用为8GB:

后期运行发现iGitlab吃内存太厉害,达到9个多GB,其实根本不需要这么大的内存!

[root@server ~]# docker stop iGitlab      // 停止容器运行,否则如果已用内存超过8GB,下面的设置就会报错!
iGitlab
[root@server ~]# docker update -m 8192M --memory-swap 8192M iGitlab

2.关于gitlab.rb的external_url的坑: ------dbdu 2021-08-14

这个问题如果不使用容器直接在宿主机上,不会有这个问题!

更改了external_url值,会导致容器内的Nginx直接监听external_url值里面的端口号了,但是这个端口号宿主机可能和运行的容器里端口不一样!!!,这样就会通信失败!

解决方式:

方式一:重新配置的宿主机与容器的映射端口,让两者一致即可! 参考:https://blog.csdn.net/hrbbeeant/article/details/104380009

方式二: 当更改gitlab.rb中Nginx监听端口配置,取消注释,强制使用创建容器时映射的端口。即本文上面采用的处理方式!!!

你可能感兴趣的:(安装搭建,docker,Gitlab,安装搭建,CentOS7.9)