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

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
V
Visual Studio Blog
有赞技术团队
有赞技术团队
U
Unit 42
D
Docker
小众软件
小众软件
F
Full Disclosure
I
Intezer
Scott Helme
Scott Helme
P
Privacy International News Feed
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
B
Blog
Martin Fowler
Martin Fowler
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
S
Security Affairs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
月光博客
月光博客
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
Schneier on Security
Schneier on Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Threat Research - Cisco Blogs
量子位
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Heimdal Security Blog
N
Netflix TechBlog - Medium
H
Hacker News: Front Page
P
Proofpoint News Feed
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
S
Schneier on Security

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技术经验分享 Hexo-theme-butterfly修改调整记录教程 | Java技术经验分享 排序8:基数排序 | Java技术经验分享 排序7:归并排序 | Java技术经验分享 排序6:快速排序 | Java技术经验分享 排序5:冒泡排序 | Java技术经验分享 排序4:堆排序 | Java技术经验分享 排序3:选择排序 | Java技术经验分享 排序2:希尔排序 | Java技术经验分享 排序1:直接插入排序 | Java技术经验分享 推荐一款博客一文多发的良心工具OpenWrite | Java技术经验分享 近期学习计划 | Java技术经验分享 Nacos(九):Nacos集群部署和遇到的问题 | Java技术经验分享 Nacos(八):Nacos持久化 | Java技术经验分享 Nacos(七):Nacos共享配置 | Java技术经验分享 Nacos(六):多环境下如何“管理”及“隔离”配置和服务 | Java技术经验分享 Nacos(五):多环境下如何“读取”Nacos中相应的配置 | Java技术经验分享 Nacos(四):SpringCloud项目中接入Nacos作为配置中心 | Java技术经验分享 Nacos(三):Nacos与OpenFeign的对接使用 | Java技术经验分享 Nacos(二):SpringCloud项目中接入Nacos作为注册中心 | Java技术经验分享 Nacos(一):Nacos介绍 | Java技术经验分享 20190719小组分享 | Java技术经验分享 Java中equals和HashCode方法的分析 | Java技术经验分享 Java中==和equals方法的分析 | Java技术经验分享 Java中的自动拆装箱、装箱缓存 | Java技术经验分享 About-blog | Java技术经验分享 Java中的编译、反编译和反编译工具全家桶分享 | Java技术经验分享 finalize()的生命周期(执行过程) | Java技术经验分享 Java关键字之final、finally与finalize方法 | Java技术经验分享 Java中重写、重载 | Java技术经验分享 Java中面向对象的三大特征:继承、封装、多态 | Java技术经验分享 DockerFile介绍 | Java技术经验分享 Docker中私有仓库的搭建流程 | Java技术经验分享 Centos7下两种方式安装Docker-CE | Java技术经验分享 Vert.x创建一个Http服务 | Java技术经验分享 Vert.x创建TCP服务端及客户端 | Java技术经验分享 Vert.x Core(二)- Event Bus(事件总线) | Java技术经验分享 Vert.x-Core(一)- 基础篇 | Java技术经验分享 SpringBoot项目中实现国际化 | Java技术经验分享 Vert.x介绍 | Java技术经验分享 毕设选题项目本地运行环境搭建教程 | Java技术经验分享 Jupyter Notebooks的安装和使用介绍 | Java技术经验分享 算法笔试题:1元,5元,10元,20元,50元、100元面值人民币组合给定x元的问题 | Java技术经验分享 Quartz学习总结 | Java技术经验分享 SpringBoot2.x集成Redis | Java技术经验分享 SpringBoot2.x集成MongoDB | Java技术经验分享 [SpringCloud学习] - 浅谈微服务架构 | Java技术经验分享 基于hexo和coding免费搭建个人博客网站 | Java技术经验分享 Hello World | 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(填坑)