点击上方“dotNET名人堂”,选择“”
用学习的姿态,步入工作的状态

上一篇 .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 的参数配置可以查看官方文档。

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

可能会遇到的问题
我在安装及配置的时候遇到了两个问题,可能有人也会遇到。
GitLab 一直在重启(跑不起来)
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。

创建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即可。


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镜像并运行容器 。

1581

被折叠的 条评论
为什么被折叠?



