惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
I
InfoQ
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
量子位
博客园 - 叶小钗
月光博客
月光博客
IT之家
IT之家
G
Google Developers Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享

Java技术经验分享

生产故障处理SOP分享 | Java技术经验分享 系统稳定性建设实践总结【转载】 | Java技术经验分享 valine访问leancloud国际版异常,评论失效修复 | Java技术经验分享 匆匆忙忙的2021 | Java技术经验分享 聊一下换工作 | Java技术经验分享 IoT系列(2):WIFI设备常见配网方案介绍 | Java技术经验分享 IoT系列(1):什么是物联网 | Java技术经验分享 Java8特性2 - StreamApi | Java技术经验分享 Java8特性1 - lambda表达式&函数式接口 | Java技术经验分享 设计模式(5)-适配器模式 | Java技术经验分享 设计模式(4)-建造者模式 | Java技术经验分享 设计模式(3)-原型模式与浅拷贝和深拷贝 | Java技术经验分享 设计模式(2)-工厂模式图文介绍 | Java技术经验分享 设计模式(1)-带你了解3类8种单例模式 | Java技术经验分享 Java时间处理5---Java8中时区相关类库介绍 | Java技术经验分享 Java时间处理4---Java8中LocalDate、LocalTime、LocalDateTime介绍 | Java技术经验分享 Java时间处理3---Java8中Instant、Duration、Period、Clock介绍 | Java技术经验分享 一些有意思的问答 | Java技术经验分享 Nacos系列博客说明 | Java技术经验分享 菜鸡程序员的2019年度总结 | Java技术经验分享 Java中“附近的人”实现方案讨论及代码实现 | Java技术经验分享 Java时间处理2----时区TimeZone类方法探究(Java8以前) | Java技术经验分享 Java时间处理1----Date和Calendar方法探究(Java8以前) | Java技术经验分享 FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | Java技术经验分享 2019.11软考软件设计师归来心得体会及复习备考指南 | Java技术经验分享 你还没用过“约定式提交”吗?那你赶紧来补补知识吧 | Java技术经验分享 教你如何看懂UML中的类图及类图中的关系 | Java技术经验分享 设计模式总览 | Java技术经验分享 萌新入门Github请看这里,学不会远程教 | Java技术经验分享 Hexo的工作原理探究 | Java技术经验分享
Docker环境下安装Gitlab | Java技术经验分享
文章作者: LarsCheng · 2019-04-30 · via Java技术经验分享

前言

在Docker中我们同样可以部署自己专属的代码仓库GitLab,下面简单介绍一下安装流程。

安装前提

说明:我的虚拟机ip:10.200.0.230,安装过程中涉及到的ip配置可替换成你的ip地址

安装步骤

拉取GitLab镜像

GitLab的镜像有很多,官方镜像:gitlab/gitlab-ce,网友汉化版镜像:twang2218/gitlab-ce-zh,此处以官方镜像进行安装介绍,下面拉取镜像到本地。

docker pull gitlab/gitlab-ce

启动gitlab容器

docker run -d \
-p 9443:443 \
-p 9080:80 \
-p 222:22 \
--name gitlab \
--restart always \
--hostname 10.200.0.230 \
-v /home/gitlab/config:/etc/gitlab  \
-v /home/gitlab/logs:/var/log/gitlab  \
-v /home/gitlab/data:/var/opt/gitlab  \
gitlab/gitlab-ce

说明:

  • -d 后台启动,打印容器id
  • -p 9080:80 将宿主机的端口映射至容器暴露的端口
  • –name gitlab 设置容器名称为gitlab
  • –restart always 设置容器重启策略:在容器退出时总是重启容器
  • –hostname 10.200.0.230 设置容器主机名为10.200.0.230(此处修改为你相应的虚拟机ip
  • -v 挂载目录至宿主机,方便备份

出现如下图所示时表示启动成功

配置gitlab服务器的访问地址

按照上面的方式,让gitlab容器运行起来是没有问题的,但是当在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,即容器的id。作为gitlab服务器,当然是需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机上的路径为:/home/gitlab/config/gitlab.rb)配置文件里面的参数。执行如下命令:

vi /home/gitlab/config/gitlab.rb

可以看到,文件中的配置默认都是注释掉的,为修改方便,直接添加三条配置即可

# 配置http协议所使用的访问地址
external_url 'http://10.200.0.230'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '10.200.0.230'
gitlab_rails['gitlab_shell_ssh_port'] = 222

保存文件后重启容器

docker restart gitlab

gitlab启动较慢,可以查看容器的状态来判断是否启动成功

starting:表示正在启动中

healthy:表示已经启动成功

登录gitlab的web界面

浏览器访问 http://10.200.0.230:9080 ,可以看到第一次登录需要设置一个密码,账号默认是root,设置完后直接登录即可

登录成功后进入管理页面,我们通过Create a project创建一个项目先。

项目内容如下:

创建成功,查看克隆地址,仔细观察http的url还是有问题http://10.200.0.230/root/testdemo.git,此处仍使用的默认80端口,所以还是得接着修改配置。

修改gitlab.yml(位于宿主机/home/gitlab/data/gitlab-rails/etc/)

vi /home/gitlab/data/gitlab-rails/etc/gitlab.yml

修改GitLab settings下的port为9080,如下:

保存修改后重启容器,等待容器启动成功,进入web页面查看,可以看到此时克隆地址已经ok了

Git拉取提交测试

通过Http拉取项目

本地电脑上通过git bash 来拉取刚才创建的项目

git clone http://10.200.0.230:9080/root/testdemo.git(此处可替换为你的url地址)

如下图所示,即为克隆成功,首次拉取需要验证账号密码(gitlab的账号密码,root+设置的密码)

通过SSH拉取项目

  1. 生成私钥和公钥(若已有可跳过)

    git bash中查看是否有已生成的私钥公钥
    cd ~/.ssh

如图所示表示已有私钥和公钥文件

当然你可以重新生成,步骤如下:

设置Git的user name和email:

git config --global user.name "zhengql"
git config --global user.email "zhengql@test.com"

生成私钥和公钥(需要你设置一个密码,此处建议不进行设置,直接三次回车)

ssh-keygen -t rsa -C "zhengql@test.com"

下图为生成步骤图解

成功之后。查看生成的文件夹内有两个文件,查看公钥文件内容

  1. 在gitlab中配置公钥

直接进入gitlab的web页面,复制我们刚刚生成的公钥内容添加至gitlab,操作如下

  1. 通过git bash 克隆项目至本地

    git clone ssh://git@10.200.0.230:222/root/testdemo.git(此处可以替换为你的ssh地址)

成功图示如下:

总结

至此,Docker中搭建GitLab流程和两种方式克隆项目的测试就介绍完毕了。

其实在搭建过程中有很多配置上的小坑,例如在修改80端口的映射后external_url是否需要加上端口
测试发现如果在external_url设置为ip+端口,会导致无法访问gitlab的web页面,所以目前我的解决方法是手动修改启动后生成的gitlab.yml中的配置,然后让容器重新读取配置,这样的弊端就是当通过docker restart gitlab重启容器后,修改的gitlab.yml会被覆盖。

参考

利用GitLab Docker images安装GitLab(填坑)