使用Docker在Centos7上搭建gitlab服务器


1、下载镜像文件

docker pull gitlab/gitlab-ce

2、创建GitLab 的配置 (config) 、 日志 (logs) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录

mkdir -p /mydata/gitlab/config

mkdir -p /mydata/gitlab/logs

mkdir -p /mydata/gitlab/data

3、运行GitLab容器

docker run -p 80:80 --restart=always --name gitlab \
-v /mydata/gitlab/config:/etc/gitlab \
-v /mydata/gitlab/logs:/var/log/gitlab \
-v /mydata/gitlab/data:/var/opt/gitlab \
-d gitlab/gitlab-ce:latest  

查看/mydata/gitlab/config目录下的文件

4、修改/mydata/gitlab/config/gitlab.rb

把external_url改成部署机器的域名或者IP地址

vi /mydata/gitlab/config/gitlab.rb

按ESC键 :wq保存

5、修改/mydata/gitlab/data/gitlab-rails/etc/gitlab.yml

vi /mydata/gitlab/data/gitlab-rails/etc/gitlab.yml

找到关键字 ## Web server settings
将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址

按ESC键 :wq保存

注意:如果不使用默认的80端口,则端口映射不需要内部80端口

(1)、修改/mydata/gitlab/config下的gitlab.rb

vi gitlab.rb

(2)、修改/mydata/gitlab/data/gitlab-rails/etc下的gitlab.yml

vi gitlab.yml

gitlab.rb和gitlab.yml里面的端口需要一致,这样浏览器访问或克隆项目时都会携带端口;如果已经映射了内部的80端口,则只需要把运行的gitlab容器停止、删除,然后重新映射我们指定的端口(8088)运行容器。这样就能正常访问我们的项目了。

docker run -p 8088:8088 -p 8443:443 -p 8022:22 --restart=always --name gitlab \
-v /mydata/gitlab/config:/etc/gitlab \
-v /mydata/gitlab/logs:/var/log/gitlab \
-v /mydata/gitlab/data:/var/opt/gitlab \
-d gitlab/gitlab-ce:latest  

6、查看docker状态

docker ps

7、停止docker容器

docker stop gitlab

8、删除容器

docker rm gitlab

9、查看docker状态

docker ps

10、重启docker

systemctl restart docker

11、运行GitLab容器

docker run -p 80:80 --restart=always --name gitlab \
-v /mydata/gitlab/config:/etc/gitlab \
-v /mydata/gitlab/logs:/var/log/gitlab \
-v /mydata/gitlab/data:/var/opt/gitlab \
-d gitlab/gitlab-ce:latest

12、访问Gitlab

  • 访问地址:http://192.168.2.104/
  • 由于Gitlab启动比较慢,需要耐心等待10分钟左右,如果Gitlab没有启动完成访问,会出现如下错误。

  • 可以通过docker命令动态查看容器启动日志来知道gitlab是否已经启动完成
docker logs gitlab

注意:如果在ECS上配置的gitlab端口被占用,更改其他端口时,在阿里云服务器ECS实例中,设置安全组允许你设置的端口访问即可

13、Gitlab的初次使用

Gitlab启动完成后第一次访问,账号:root,初始密码可以通过指令查看:

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

也可以通过挂载宿主机器的配置文件查看:

14、ECS搭建gitlab服务器访问中断(慢)的问题

浏览器访问gitlab的web页面,发现非常慢,并且很容易出现502问题。后来搜了下,原因是gitlab占用内存太多,导致服务器崩溃。尤其是使用阿里云的服务器,最容易出现502,默认情况下,阿里云云主机的swap功能是没有启用的,解决办法就是启动swap分区。

Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

阿里云服务器默认swap分区是没启动的,输入free查看,如下显示的都是0

也可以通过cat /proc/swaps查看

14.1、创建swap分区4G(/data/swap访问不到,后面所有步骤都替换成/home/swap)

dd if=/dev/zero of=/home/swap bs=512 count=8388616

14.2、通过mkswap命令将上面新建出的文件做成swap分区

备注:前面如果用的/home/swap则下面这条命令也用/home/swap

mkswap /home/swap

14.3、查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成60

vi /etc/sysctl.conf

14.4、启用分区(注意:前面如果用的/home/swap则下面这条命令也用/home/swap

swapon /home/swap

14.5、修改/etc/fstab文件(注意:前面如果用的/home/swap则下面这条命令也用/home/swap)

echo “/data/swap swap swap defaults 0 0” >> /etc/fsta

14.6、最后查看swap分区是否成功

cat /proc/swaps

14.7、重启gitlab即可


文章作者: Beck Liang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Beck Liang !
 上一篇
使用gitlab提供的CICD功能进行项目部署(SpringCloud微服务) 使用gitlab提供的CICD功能进行项目部署(SpringCloud微服务)
Gitlab CI/CD内置于GitLab,是Gitlab一个简洁好用的的持续集成/持续交付/持续部署的框架,通过gitlab.yml进行自动化配置文件设置。
2022-06-27
下一篇 
Docke安装配置Nginx并启动 Docke安装配置Nginx并启动
Docker容器可以为应用创建一个独立的镜像,当然Nginx也是可以的Docker容器内部文件系统与外部非直接关联因此在Nginx安装以及启动过程中需要建立文件系统目录映射。
2022-05-21
  目录