一、gitlab安装
1.1 镜像查询
# 查询gitlab有哪些镜像
docker search gitlab
1.2 镜像拉取(重点)
镜像的拉取会直接影响到后面我们汉化,所以镜像的选择尤为重要。可以看到主要有两个镜像,比较方便我们利用的,第一个是官方社区版的镜像,第四个是其他大神爱好者汉化社区版的镜像。后续两种镜像我都会进行介绍。
1.2.1 官方社区版
官方社区版是纯英语的,可以原汁原味地体验gitlab。而且镜像更新非常积极,新加的功能都能够体验到。
如果使用以下命令拉取,得到的就会是最新版的gitlab。
docker pull gitlab/gitlab-ce
但是最新版有个弊端就gitlab的中文比一定能马上匹配。如果想知道现在汉化匹配到什么版本了,可以查看gitlab中文社区。
https://gitlab.com/xhang/gitlab/
笔者下载了12.3.5版本。
docker pull gitlab/gitlab-ce:12.3.5-ce.0
1.2.2 已汉化社区版
如果不想自己汉化的话,可以选择第四个是汉化社区版的镜像。
但是这个镜像目前已经快2年没有更新维护了,gitlab版本也是上一个版本11.1。
1.3 镜像安装
镜像拉取下来后,使用docker images查看自己拉取的镜像,然后使用docker run启动gitlab容器,建议启动命令写成一个bash,防止忘记自己启动时的参数配置。
#!/bin/bash
IMAGE_NAME='gitlab/gitlab-ce'
CONTAINER_NAME='gitlab-ce-zh'
CONTAINER_ID=`docker run \
-d \
-p 7080:80 \
-p 7443:443 \
-p 7022:22 \
--restart always \
-v /home/gitlab/config:/etc/gitlab \
-v /home/gitlab/logs:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
--name ${CONTAINER_NAME} \
${IMAGE_NAME}`
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
# 以上参数的具体用法,建议读者可以自己动手对比添加和不添加的区别,加深学习印象
命令运行结束后,会出现容器ID,可以通过docker ps查看容器是否成功启动。然后访问gitlab的地址,如果能打开gitlab主页说明已经成功运行。如果使用的是中文社区版的,打开之后就是中文的了。
二、gitlab配置
2.1 访问url配置
url的配置在/etc/gitlab/gitlab.rb里面,基本上gitlab的所有配置都可以在gitlab.rb这个文件里面完成配置。
# url配置样例
external_url = 'http://127.0.0.1:80/gitlab'
2.2 管理员配置
首次登录还需要配置管理员密码,管理员账号为root,密码在首次登录的页面上设置。
三、汉化
如果直接使用汉化的docker镜像就不用进行这一步了。
3.1 获取汉化包
访问https://gitlab.com/xhang/gitlab/,根据自己的gitlab获取相应版本的汉化包。也可以使用大stable版本。比如12.3.5可以使用gitlab-12-3-stable-zh
可以通过命令获取
# 首先查看gitlab的版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 使用wget获取具体的版本
wget https://gitlab.com/xhang/gitlab/-/archive/v12.3.5-zh/gitlab-v12.3.5-zh.tar.gz
# 或者用git获取大版本
git clone -b gitlab-12-3-stable-zh https://gitlab.com/xhang/gitlab/
也可以直接下载
3.2 汉化
# 把汉化包复制到容器/opt/gitlab/embedded/service目录下
docker cp [汉化包名称] [容器ID]:/opt/gitlab/embedded/service
# 进去容器里面继续操作
docker exec -it [容器ID] bash
cd /opt/gitlab/embedded/service
# 把汉化包里面的所有文件复制到gitlab-rails里面
cp -rf [汉化包名称]/* gitlab-rails
# 如果出现下面两条语句是正常的
cp: cannot overwrite non-directory 'gitlab-rails/log' with directory 'gitlab-v12.3.5-zh/log'
cp: cannot overwrite non-directory 'gitlab-rails/tmp' with directory 'gitlab-v12.3.5-zh/tmp'
# 重新加载和启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
再次访问主页,已经汉化了。
可以使用docker commit命令把已经汉化的版本保存成镜像,方便下次迁移使用。
docker commit -a "[作者]" [容器ID] [新的镜像名]:[tag]
后续
安装好gitlab后发现无法推送代码到服务器,端口为8081,从页面上看git的拉取地址出现了错误,字符串值为docker容器的id。我们要将它修改为主机ip地址。
按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。
# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址(不要加端口!)
external_url 'http://192.168.199.231'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出
# 重启gitlab容器
$ docker restart gitlab