通过GitLab CI 自动部署.netcore api到Docker(二)快速用Docker部署你自己的GitLab

点击上方“dotNET名人堂”,选择“”

用学习的姿态,步入工作的状态

640?wx_fmt=jpeg

上一篇 .Net & Docker(一)在Docker容器上运行.Net Core API 我们已经知道了Docker的一些基本用法,以及成功的将.NET Core Web API 运行在一个Docker 容器中。我们此次的目标是用GitLab CI 做到自动部署API到容器中,所以接下来我们需要一个GitLab环境。

我会向大家演示一下如何在5分钟之内用Docker部署一套GitLab环境,以及几个我在实施过程中踩过的坑。

Gitlab的安装与配置 

sudo docker run --detach \    	
--hostname 127.0.0.1 \    	
--publish 443:443 --publish 80:80 --publish 2222:22 \    	
--name gitlab \    	
--restart always \    	
--volume /srv/gitlab/config:/etc/gitlab:Z \    	
--volume /srv/gitlab/logs:/var/log/gitlab:Z \   	
--volume /srv/gitlab/data:/var/opt/gitlab:Z \    	
gitlab/gitlab-ce:latest

我们用到的参数列表:docker run 的参数配置可以查看官方文档。 

640?wx_fmt=png

在运行安装脚本之前,我们所使用的volume路径需要授权给docker。

640?wx_fmt=jpeg

可能会遇到的问题

我在安装及配置的时候遇到了两个问题,可能有人也会遇到。

  1. GitLab 一直在重启(跑不起来)

  2. SSH连接不上

SSH连接的问题我们下面有一小节会讲,这里我简单说一下第一个问题。当我运行脚本之后通过 docker ps 查看当前正在运行的容里面并没有看到 gitlab这个容器,通过 ps -a显示所有容器时发现它的状态一直是 starting 或者 restarting。这个时候我们可以使用 docker logs 来查看当前容器的运行日志。

Preparing services... Starting services... /opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted /opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system Configuring GitLab package... Configuring GitLab... =============================================================================Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'

=============================================================================

通过 docker logs 可以方便大家来论断错误,一切正常还好,如果一旦出现问题,新手是很懵圈的。这个时候可能通过google 查找错误日志,多数情况下都能找到正确答案,我遇到的是个权限不足的问题, 在这个链接里面有完整的讨论,解决办法就是执行下面这句命令之后就可以正常启行了。

sudo chmod 2770 /srv/gitlab/data/git-data/repositories

SSH 连接GitLab 

如果对于SSH不是很了解的同学可以看看阮一峰写的两篇关于SSH原理与运用的文章,非常的不错。我们直接开始尝试用SSH连接我们本地的gitlab。

 

首先我们需要得到一个SSH Key,输入

cat ~/.ssh/id_rsa.pub 

如果出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那我们可以直接拿来用,如果没有则需要我们自己创建一个SSH Key。

640?wx_fmt=jpeg

创建SSH Key

输入以下命令创建一个SSH Key。

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

完成之后可以再输入 上面的cat命令 或者pbcopy直接复制生成的ssh key。

pbcopy < ~/.ssh/id_rsa.pub

在GitLab中账号-》设置中找到 SSH Keys中添加这个Key即可。

640?wx_fmt=png

640?wx_fmt=png

SSH 连接 2222 端口

正常情况下你已经可以通过git命令来连接我们部署的gitlab,但这里不一样的是我们把容器的 22端口映射到了 host的 2222上,我们需要指定端口来进连接。

ssh -p 2222 git@127.0.0.1

同时还需要更改GitLab的配置文件中的 ssh端口,否则GitLab中为我们生成的项目连接地址会连接不上。/gitlab/config/gitlab.rb

gitlab_rails['gitlab_shell_ssh_port'] = 2222

更改完ssh端口之后重启gitlab容器,之后我们的项目 ssh连接址会变为:

ssh://git@127.0.0.1:2222/jesse/webapi.git

到这里我们已经完成了GitLab的部署,可以将我们之前的net core api 项目提交到代码库,都是一些常规的操作,这里就不做过多的说明了。

今天这一篇偏操作性质,主要我们需要这样一套环境来完成整个练习。了解SSH的原理比较重要。后面一篇我们将开始实践GitLab CI Runner当有代码提交的时候会自动编译.NET CORE 并构建Docker镜像并运行容器 。

640?wx_fmt=jpeg

点击 【在看】与好朋友一起分享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值