Ubuntu 18.04 使用Docker镜像方式安装GitLab

  • 关于GitLab
  • 确保已经安装好Docker
  • 运行gitlab-ee镜像(第一次执行会先下载镜像)
  • 映射目录的用途
  • 配置GitLab
  • 访问GitLab服务
  • 使用不同的端口访问GitLab
  • 使用GitLab创建一个项目


《Ubuntu 18.04 安装Docker CE》

运行gitlab-ee镜像(第一次执行会先下载镜像)

$ sudo docker run --detach \
	--hostname gitlab-server \
	--publish 443:443 --publish 80:80 --publish 22:22 \
	--name gitlab \
	--restart always \
	--volume /srv/gitlab/config:/etc/gitlab \
	--volume /srv/gitlab/logs:/var/log/gitlab \
	--volume /srv/gitlab/data:/var/opt/gitlab \
	gitlab/gitlab-ee:latest

参数


说明

hostname

gitlab-server

设置gitlab容器的主机名为 gitlab-server

publish

443:443

设置宿主机与docker容器的端口映射(如宿主端口被占用请更换别的端口,参考本文下面的内容)

name

gitlab

设置容器的名称为gitlab(只是一个标识,可随意指定)

restart

always

在容器退出时总是重启容器

volume

/srv/gitlab/config:/etc/gitlab

将本地目录与容器内的目录映射

映射目录的用途

本地目录

容器目录

用途

/srv/gitlab/data

/var/opt/gitlab

存储应用数据

/srv/gitlab/logs

/var/log/gitlab

存储日志数据

/srv/gitlab/config

/etc/gitlab

存储配置文件

配置GitLab

gitlab-ee容器使用的是官方Omnibus GitLab包,所有配置都在一个文件中:/etc/gitlab/gitlab.rb

  1. 编辑gitlab.rb文件
$ sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb	##命令一
  1. 由于本地目录与容器内的目录建立了映射,直接修改本地文件也是一样的,下面的指令效果跟上面的指令一样:
$ sudo vi /srv/gitlab/config/gitlab.rb	##命令二
  • 命令一相当于链接到容器内的shell,进入交互模式,执行的是容器内的指令:编辑gitlab.rb文件
  • 在打开的窗口中将external_url设置为:http://192.168.199.175(该ip是宿主机的ip,根据自己主机上的ip更改)
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://192.168.199.175'
  • 编辑完成后输入:wq退出vi编辑器窗口
  1. 重启gitlab
$ sudo docker restart gitlab

访问GitLab服务

  • 用浏览器打开 http://192.168.199.175/ ,第一次打开需要设置root密码,如下图:
  • 使用root用户登录并设置GitLab,比如:创建项目,创建组,添加用户等:

使用不同的端口访问GitLab

如果宿主机的80端口被占用,那么我们可以修改映射的端口,将其他端口暴露为GitLab服务

  1. 停止当前的gitlab容器
$ sudo docker stop gitlab
  1. 删除gitlab容器
$ sudo docker rm gitlab
  1. 使用其他端口重新启动新的gitlab容器
$ sudo docker run --detach \
	--hostname gitlab-server \
	--publish 9090:9090 --publish 8022:22 \
	--name gitlab \
	--restart always \
	--volume /srv/gitlab/config:/etc/gitlab \
	--volume /srv/gitlab/logs:/var/log/gitlab \
	--volume /srv/gitlab/data:/var/opt/gitlab \
	gitlab/gitlab-ee:latest
  • 此时访问GitLab服务的地址变为:http://192.168.199.175:9090,在访问之前还需要设置external_url 为:http://192.168.199.175:9090
  • 注意:一旦在external_url最后加上端口号,容器内的nginx就会监听这个端口,也就意味着宿主机和容器的映射端口(–publish 9090:9090)必须与external_url的端口一样,都是9090
  1. 设置external_url及ssh_port
$ sudo vi /srv/gitlab/config/gitlab.rb
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://192.168.199.175:9090'
### GitLab Shell settings for GitLab
gitlab_rails['gitlab_shell_ssh_port'] = 8022
  1. 重启gitlab容器使设置生效
$ sudo docker restart gitlab

使用GitLab创建一个项目

  1. 打开http://192.168.199.175:9090,设置root账户并登录
  2. 点击New user按钮创建一个用户
  • 用户创建完成后点击右上角Edit按钮设置用户的密码
  • 退出root用户,用刚刚创建的用户登录
  1. 点击Create a group 创建一个组
  2. 点击New project 按钮创建一个项目
  3. 复制项目地址,并用git客户端clone
$ git clone http://192.168.199.175:9090/groupone/example-project.git
  1. 执行上面的命令会要求输入用户名密码,按照要求输入,接着执行下面的指令
$ cd example-project
$ echo '这是一个通过gitlab创建的项目' > README.md
$ git add README.md
$ git commit -m "add README"
$ git push -u origin master
  1. 重新回到GitLab的项目详情页面,可以看到刚才提交的README.md已经在项目中了