GitLab 是一个用于源码仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务(类似于github)。GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写。
Gitlab本身对中文进行了支持,登陆用户可以通过右上角头像->设置->语言偏好->选择简体中文。
但从各版本看,汉化的内容较少,很多功能菜单汉化的并不彻底,因此为了个人/企业使用需要更完美的进行汉化。
为什么使用这种docker commit方式制作汉化,最后会有一个简单的说明,根据官方的image镜像制作,这种方式应该是最快的。
1、使用docker pull gitlab/gitlab-ce:11.2.3 下载image
root@default:/# 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、汉化之前要先将服务停止
root@gitlab:/# 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
root@gitlab:/#
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镜像的尝试。
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的汉化版。That’s all。