TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)
1.准备项
1.1.服务器一台,1H4G(更小内存应该也可以,自行测试),系统:Ubuntu 16.04 64位
1.2.数据库一个,MYSQL,MSSQL都可以(还有其他的,自行配置),教程是MSSQL
1.3.其他软件,Xshell (用于远程Linux服务器),WinSCP(用于管理Linux服务器上的文件)
2.装服务器环境
2.1.Docker环境安装:
因为墙的原因,这里需要使用国内镜像加速服务,这里使用阿里云的镜像加速服务,阿里云的镜像加速服务,登陆阿里云后,选择[容器镜像服务]->[镜像加速器]
2.1.1首先,安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
装完后输入:
docker version
查询docker是否装成功。
然后配置加速源,这里可以使用阿里云提供的命令,也可以用WinSCP找到/etc/docker目录建立daemon.json
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
xxxxxxx改为阿里云提供给你的地址
如果是使用命令添加,请依此输入以下命令
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' {
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
} EOF
然后重启docker服务
systemctl daemon-reload systemctl restart docker
Docker环境搭建完毕
2.1.TeamCity-Server环境安装
拉取官方镜像(有点大,建议使用云服务器测试,入站带宽大,下载速度块)
docker pull jetbrains/teamcity-server
出现
Status: Downloaded newer image for jetbrains/teamcity-server:latest
则拉取成功,接下来启动teamcity-server
docker run -d -it --name teamcity-ecms -v /data/tc/datadir:/data/teamcity_server/datadir -p 8111:8111 jetbrains/teamcity-server //然后
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7a0a5b60a4b1 jetbrains/teamcity-server "/run-services.sh" seconds ago Up seconds 0.0.0.0:->/tcp teamcity-ecms
出现上述结果就成功了。接下来打开防火墙8111端口(外网的话),访问: <your id>:8111
出现上述图片则搭建成功!
点击[Proceed]按钮进入下一步,选择你准备的数据库类型,这里选MSSQL,需要下载JDBC drivers,点击[Downloading JDBC drivers]的按钮就行了,自动下载
按上面的图片填写,点击[Proceed],稍等3-10分钟,如果出现报错,请检查你的参数是否填写正确!
弄完之后会出现一个协议,拉到最下面,勾选Accept license agreement,点击[Continue>]按钮
然后出现创建账号的页面,自行创建一个管理员账号,登陆~
到这里为止,如果没出现问题,那么teamcity-server的环境就搭建完毕了。
2.2.TeamCity-Agent环境安装
有个teamcity-server,还需要agent来做Build,push的工作(类似于编译平台)
第一步拉取Agent的镜像
docker pull jetbrains/teamcity-agent
第二步启动容器
docker run -d -it -e SERVER_URL="192.168.0.19:8111" -v /etc/docker:/data/teamcity_agent/conf -v /var/run/docker.sock:/var/run/docker.sock -v /opt/buildagent/work:/opt/buildagent/work -v /opt/buildagent/temp:/opt/buildagent/temp -v /opt/buildagent/tools:/opt/buildagent/tools -v /opt/buildagent/plugins:/opt/buildagent/plugins -v /opt/buildagent/system:/opt/buildagent/system jetbrains/teamcity-agent
[192.168.0.19:8111]这里最好填内网地址(安装速度快,省流量),如果没有局域网,就要填外网地址,请大家注意!
并且这个启动方式会和Agent的共享主机的Docker配置和缓存,如果有疑问可以使用另外一个命令,https://hub.docker.com/r/jetbrains/teamcity-agent/,自行翻阅
执行后,可使用docker logs -f <CONTAINER-ID>查看启动日志,CONTAINER-ID使用docker ps查看
然后进入Server的WEBUI页面,选择Agents->Unauthorized
审核它!然后他就会出现在Connected里!
到这里为准,TeamCity的所有环境就搭好了!!!!!
2.3.Rancher环境安装
拉取镜像并部署容器
docker run -d --restart=unless-stopped -p : rancher/server
过3-5分钟后,防火墙打开8080端口,访问<your id>:8080
出现上述页面,成功,rancher环境安装完毕!!!
2.4.docker register环境配置
修改之前的daemon.json
{
"registry-mirrors": ["https://xfgphhex.mirror.aliyuncs.com"],
"insecure-registries":["192.168.0.19:5000"]
}
保存。192.168.0.19可以配置成外网(已测试,木有问题),记得打开5000端口!
重启docker
systemctl restart docker
注意,重启docker会把teamcity和rancher的容器关掉,记得重启一下3个容器(ID通过docker ps -a命令查询)
docker start <Container ID>
启动register
docker run -d -p : --name registry registry:
环境到这一步就搭建完毕了~!接下来就是DevOps实现
3.DevOps实践
3.1使用TeamCity制作镜像并注册到Docker register中
打开TeamCity,点击左上角[projects],点击[create project]
进入后,选择[Manually]
填一个名字保存。
进入下面这个页面,点击[+Create build configuration]
填一个名字保存。
进入下面这个页面,填写源代码的url,这里使用朋友的一个脚手架项目做演示,你们也可以先用这个做实验,gitee地址:https://gitee.com/kitteam/ecms
保存。返回下图的页面,点击Build Steps ,点击[+Add build step]按钮
第一步,使用dockerfile制作镜像,参数如下,dockerfile在图上的地址,自行在gitee查看,可以使用后面的选择选出来也行。路径一定要填'/'要不然copy代码会失败
第二步,将打包好的镜像register到agent的服务器上
继续[+Add build step],这次命令选other,具体参数如下图
第三部,把register里的镜像推送上去
继续[+Add build step],这次命令选push,具体参数如下图
OK,到这一步teamcity的配置就完成了!
接下来run一次把~~~~~
【192.168.1.43的问题是因为内网IP换了~~~,所以跟着换了,大家不用在意这点细节】
点击后,可以去[Projects]里看日志,稍等片刻把~(第一次build有点慢(5分钟左右),后续build因为docker缓存的原因会快很多(1分钟))
出现下图,则teamcity的任务就全部完成了!!
3.2使用Rancher管理主机,镜像,容器
3.2.1 添加主机
顶部:基础架构-主机,点击添加主机
点击保存
填写IP,复制下面的命令到服务器执行
docker run -e CATTLE_AGENT_IP="192.168.1.43" --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://xxx.xx.xx.xxx:8080/v1/scripts/4E62331D4DDD7218B2F3:1546214400000:WmLv6AlVT21dW7TheGXE8iRvQ
然后稍等片刻,安装成功后,前往主机页面查看
3.2.2 添加应用
点击左上角,选择环境
点击【添加应用】
随便填一下保存!
跳转后,点击右上角【添加服务】
填写参数如下图
点击创建
然后稍等片刻,打开主机
启动完成,这个时候打开<your ip>:8081访问网站
到这里,这个文章就结束了,成功~
希望文章对有兴趣搭建CI/CD DevOps环境的公司和个人有所帮助,蟹蟹!
TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)的更多相关文章
- Linux服务器使用Docker部署.net Core项目
发布ASP.NET Core项目 和普通的项目发布一样,将项目发布到目标文件夹中 构建Dockerfile文件 在目标文件根目录新建Dockerfile文件(没有后缀) FROM microsoft/ ...
- Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD
随着项目的不断增多,最开始单体项目手动执行 docker build 命令,手动发布项目就不再适用了.一两个项目可能还吃得消,10 多个项目每天让你构建一次还是够呛.即便你的项目少,每次花费在发布上面 ...
- Linux上用Docker部署Net Core项目
前提:本地配置好Docker环境1.构建Net Core镜像 docker pull microsoft/dotnet 2.新建一个DockerFile文件并填充内容 #基于 `microsoft/d ...
- ASP.NET Core在CentOS上的最小化部署实践
引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个Nginx-Powered AspNet Core Web准生产应用. 在开始之前,我们还是重温一下部署原理,正 ...
- windows下docker与.net core 的简单示例
一 windows 下安装docker 二 .net core 项目 新建一个空的ASP.NET Core Web 应用程序 在该项目的目录下执行dotnet publish,可以看到在bin\Deb ...
- kubernetes+Azure DevOps实现.Net Core项目的自动化部署&均衡负载
1. 前言 2. Net Core项目本身的准备 2.1 dockerfile 2.2 创建kubernetes用于helm的chart包 2.2.1 说明 2.2.2 chart文件目录和文件组成 ...
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(一 .简介与创建自己的代理池)
前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 打算用三个篇幅来记录完整的全过程 觉得有帮助的朋友~可以左上 ...
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...
- Docker + Jenkins 持续部署 ASP.NET Core 项目
Docker 是个好东西,特别是用它来部署 ASP.NET Core Web 项目的时候,但是仅仅的让程序运行起来远远不能满足我的需求,如果能够像 DaoCloud 提供的持续集成服务那样,检测 gi ...
随机推荐
- spark1.0属性配置以及spark-submit简单使用
在spark1.0中属性支持三种配置方式: 1.代码 在代码中构造SparkConf时指定master.appname或者key-value等 val conf = new SparkConf(); ...
- Python3 os模块应用
调用模块的实质是运行python代码,比如a.py文件里有函数f(),那么你在调用a模块的时候,实质是运行了a模块里的函数f(),这个时候内存里就有这个函数了,可以直接用,那是不是随便一个py类型的文 ...
- json 拖拽
1.梳理知识点 1.事件对象 e || event 2.事件对象的属性 鼠标事件对象 : 坐标属性 : clientX clientY pageX pageY offset ...
- 0_Simple__simpleCooperativeGroups
▶ 协作组,CUDA9.0 的新特性 ▶ 源代码,如何获得协作组的编号? #include <stdio.h> #include "cuda_runtime.h" #i ...
- Amazon AWS S3 操作手册
Install the SDK The recommended way to use the AWS SDK for Java in your project is to consume it fro ...
- VB6 内存释放
VB在内存释放方面是这样的, 首先和其他任何语言一样,如果是在stack分配的空间的话,操作系统自动进行管理 比如下面的语句 dim a as string '当a 超出它的作用范围以后,就会被释放掉 ...
- AS3 - 数组元素乱序方法以及效率比较
http://www.hangge.com/blog/cache/detail_453.html
- 前端-jQuery的ajax方法
https://www.cnblogs.com/majj/p/9134922.html 0.什么是ajax AJAX = 异步的javascript和XML(Asynchronous Javascri ...
- python之model模块和包的介绍
一,模块的概念:常见场景:一个模块就是一个包含了一组功能的Python文件,比如spam.py,模块名为spam,可以通过import spam使用 在Python中,模块的使用方式都是一样的,但其实 ...
- UILabel 自适应高度,宽度
mLabel1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 20, 10, 1)]; mLabel1.text = @"my label 1, ...