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