随着Git代码管理工具的兴起,我们很多时候需要用到自己的git私有服务器,从而做到防止代码泄露等。gitLab为我们提供了一种简便的方式,使我们可以快速搭建自己的Git私有服务器
基础条件
本文主要是在一台装有ubuntu系统的服务器上安装gitLab
安装docker
此处主要参考了菜鸟教程 Ubuntu Docker 安装
查看并确定ubuntu内核版本高于3.10
uname -r
使用脚本安装docker
wget -qO- https://get.docker.com/ | sh
安装完成之后,会提示:
If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker xxx Remember that you will have to log out and back in for this to take effect!
按照提示,执行对应的命令
sudo usermod -aG docker xxx
即可,为docker用户赋予权限,然后重新退出登录。- 启动docker服务并查看状态
sudo service docker start
sudo service docker status
安装gitlab
克隆gitlab-ce
sudo docker pull gitlab/gitlab-ce:latest
创建docker container
注意,这里因为作者的服务器80端口等已经被占用,所以,对端口进行了映射sudo docker run -d -p 8443:443 -p 8081:80 -p 8022:22 \ --name gitlab --restart always \ --volume /home/xxx/dockerData/gitlab/config:/etc/gitlab \ --volume /home/xxx/dockerData/gitlab/logs:/var/log/gitlab \ --volume /home/xxx/dockerData/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
这里,’/home/xxx/dockerData/gitlab’是映射到物理机上的卷的路径。可以根据需要自定义。
另外,注意映射端口时,避免使用8080端口,因为8080在docker内部被Unicorn占用,这里可以找到相关材料。访问并测试
首次启动比较慢,所以,需要稍等一会儿,就可以在对应http://xxx.xxx.xxx.xxx:8081 链接中访问到页面。初次使用时,需要我们创建默认的管理员密码。当登录之后,创建项目,突然发现,坏了。
在项目clone的路径中,本来应该是:8081的地方,变成了主机名。修改配置
为了解决这个问题,我们需要修改external_url,sudo docker exec -it gitlab /bin/bash vim /etc/gitlab/gitlab.rb
修改external_url为
external_url "http://xxx.xxx.xxx.xxx:8081"
这里,请将”xxx.xxx.xxx.xxx”变成为自己的主机ip
运行gitlab-ctl使配置生效gitlab-ctl reconfigure
再次测试
再次访问http://xxx.xxx.xxx.xxx:8081,发现,访问不了了。。
不得不说,我感觉这是一个bug,翻了半天文档,没找到对应的说明。
解决方法:
修改external_url时,container内部的项目端口竟然也被直接转到了8081端口上,而原来我们映射的端口时8081:80,此时,80端口上没东西了,造成访问不了了。所以,删掉这个容器,重新创建sudo docker stop gitlab sudo docker rm gitlab sudo docker run -d -p 8443:443 -p 8081:8081 -p 8022:22 \ --name gitlab --restart always \ --volume /home/xxx/dockerData/gitlab/config:/etc/gitlab \ --volume /home/xxx/dockerData/gitlab/logs:/var/log/gitlab \ --volume /home/xxx/dockerData/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
注意,此处将8081仍然映射到了8081端口上。ps,这也是为什么上面不让用8080端口的,因为如果用8080,会造成内部端口冲突。
做好这一切之后,重新访问http://xxx.xxx.xxx.xxx:8081,突然感觉世界平静了好多,这里截一张正常的图,以示庆贺。
参考资料
Ubuntu Docker 安装
用Docker安装Gitlab
Expose GitLab on different ports
Configuring the external URL for GitLab
利用GitLab Docker images安装GitLab(填坑)