Gitlab源码仓库的docker镜像(image)汉化

Gitlab是什么?

GitLab 是一个用于源码仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务(类似于github)。GitLab是由GitLabInc.开发,使用MIT许可证的基于网络Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写。

Gitlab的汉化

Gitlab本身对中文进行了支持,登陆用户可以通过右上角头像->设置->语言偏好->选择简体中文。

Gitlab源码仓库的docker镜像(image)汉化

 

但从各版本看,汉化的内容较少,很多功能菜单汉化的并不彻底,因此为了个人/企业使用需要更完美的进行汉化。

gitlab汉化的准备

  1. 使用官方的镜像文件gitlab/gitlab-ce:11.2.3 (大小约1.48G),其他版本通用
  2. 使用https://gitlab.com/xhang/gitlab中的汉化包,为保证版本匹配,也使用11-2版本的汉化包。

Gitlab源码仓库的docker镜像(image)汉化

Gitlab汉化的制作

为什么使用这种docker commit方式制作汉化,最后会有一个简单的说明,根据官方的image镜像制作,这种方式应该是最快的。

1、使用docker pull gitlab/gitlab-ce:11.2.3 下载image

[email protected]:/# docker pull gitlab/gitlab-ce:11.2.3

2、启动容器


docker run --name='gitlab-ce' -d \

-h 'gitlab' \

-m 2048m  \

-p 10022:22 -p 80:80 \

--restart always \

--volume /data/gitlab/config:/etc/gitlab \

--volume /data/gitlab/logs:/var/log/gitlab \

--volume /data/gitlab/data:/var/opt/gitlab \

gitlab/gitlab-ce

3、进入容器

docker exec -it gitlab-ce /bin/bash

4、进入汉化的工作目录

cd /opt/gitlab/embedded/service/gitlab-rails

5、汉化之前要先将服务停止

[email protected]:/# gitlab-ctl stop
ok: down: alertmanager: 1s, normally up
ok: down: gitaly: 0s, normally up
ok: down: gitlab-monitor: 0s, normally up
ok: down: gitlab-workhorse: 0s, normally up
ok: down: logrotate: 0s, normally up
ok: down: nginx: 1s, normally up
ok: down: node-exporter: 0s, normally up
ok: down: postgres-exporter: 1s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 1s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 0s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: sshd: 1s, normally up
ok: down: unicorn: 0s, normally up
[email protected]:/# 

6、将下载的汉化包解压gitlab-v11.2.3-zh,可以将下载tar文件放在挂载目录下面,并解压,不详细累述,能在容器访问即可。

我们将tar放在了host主机/data/gitlab/data目录下

7、将汉化文件覆盖掉原英文版

cp -rf /data/gitlab/data/gitlab-v11.2.3-zh/* /opt/gitlab/embedded/service/gitlab-rails/ 

8、重要,清理临时的一些文件,负责镜像制作后无法正常运行。

rm -rf /opt/gitlab/embedded/nodes/*

清除镜像运行生成的文件

9、退出容器,并将制作新镜像

docker commit gitlab-ce gitlab-ce-cn:11-2-3

新images大小在1.71GB,比原image大不少,应该还有一些临时的目录、文件没清除,但已经不影响使用。

10、使用新的汉化镜像重新run一个新容器,很多菜单已经成功汉化了。

Gitlab源码仓库的docker镜像(image)汉化

其他方案制作gitlab镜像的尝试。

1、根据官方image,使用dockerfile制作(from gitlab/gitlab-ce:11.2.3),由于image的layer限制,unionfs只有最新层是可读写层,即便是容器启动时,增加--privileged,仍然有unlimit等设置因权限无法使用,导致镜像启动失败

2、接着根据官方的dockerfile脚本制作image,但由于脚本已经很老了,ubuntu还是使用14的版本,其他的dockerfile命令也不对,经过多次尝试没有制作成功。

3、使用docker save load方式制作,这样的image只有一个layer,并且迁移到其他host也出现稀奇古怪的问题,曾经尝试成功,但兼容性差。

 

最终还是使用,docker commit方式成功制作gitlab的***。Thats all。