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实践)的更多相关文章

  1. Linux服务器使用Docker部署.net Core项目

    发布ASP.NET Core项目 和普通的项目发布一样,将项目发布到目标文件夹中 构建Dockerfile文件 在目标文件根目录新建Dockerfile文件(没有后缀) FROM microsoft/ ...

  2. Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD

    随着项目的不断增多,最开始单体项目手动执行 docker build 命令,手动发布项目就不再适用了.一两个项目可能还吃得消,10 多个项目每天让你构建一次还是够呛.即便你的项目少,每次花费在发布上面 ...

  3. Linux上用Docker部署Net Core项目

    前提:本地配置好Docker环境1.构建Net Core镜像 docker pull microsoft/dotnet 2.新建一个DockerFile文件并填充内容 #基于 `microsoft/d ...

  4. ASP.NET Core在CentOS上的最小化部署实践

    引言        本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个Nginx-Powered AspNet Core Web准生产应用. 在开始之前,我们还是重温一下部署原理,正 ...

  5. windows下docker与.net core 的简单示例

    一 windows 下安装docker 二 .net core 项目 新建一个空的ASP.NET Core Web 应用程序 在该项目的目录下执行dotnet publish,可以看到在bin\Deb ...

  6. kubernetes+Azure DevOps实现.Net Core项目的自动化部署&均衡负载

    1. 前言 2. Net Core项目本身的准备 2.1 dockerfile 2.2 创建kubernetes用于helm的chart包 2.2.1 说明 2.2.2 chart文件目录和文件组成 ...

  7. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(一 .简介与创建自己的代理池)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 打算用三个篇幅来记录完整的全过程 觉得有帮助的朋友~可以左上 ...

  8. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...

  9. Docker + Jenkins 持续部署 ASP.NET Core 项目

    Docker 是个好东西,特别是用它来部署 ASP.NET Core Web 项目的时候,但是仅仅的让程序运行起来远远不能满足我的需求,如果能够像 DaoCloud 提供的持续集成服务那样,检测 gi ...

随机推荐

  1. Hive基础之排序

    order by 1.order by会对输入按照指定字段做全局排序,输出结果有序,因此只有一个reducer(多个reducer无法保证全局排序,手工设定reduce数量无效): 只有一个reduc ...

  2. EMNLP 2018 | 用强化学习做神经机器翻译:中山大学&MSRA填补多项空白

    人工深度学习和神经网络已经为机器翻译带来了突破性的进展,强化学习也已经在游戏等领域取得了里程碑突破.中山大学数据科学与计算机学院和微软研究院的一项研究探索了强化学习在神经机器翻译领域的应用,相关论文已 ...

  3. pomelo RPC调用时新增字段缺失

    接触pomelo开发一个月,正式开始参与项目开发有10天,遇到很多细节的坑,今天讲讲标题:后端服务器节点之间的rpc调用过程中,返回的数据中新增字段缺失问题. 先讲结果:原因是该rpc调用已经采用了p ...

  4. web.py尝试性学习!

    首先导入web.py模块! import web 没有的话就: pip install web web.py的URL结构: urls = ( '/', "index" ) 第一部分 ...

  5. vb 读取指定路径文件名

    Private Sub ExportCostSheetData() InsertRow("") InsertRow("Run 2:Export CostingSheet= ...

  6. java开发-问题清单

    本人是做Java开发的,这是我参加58,搜狐,搜狗,新浪微博,百度,腾讯文学,网易以及其他一些小的创业型公司的面试常被问的问题,当然有重复,弄清楚这些 1. junit用法,before,before ...

  7. Configure First SpringMVC project in IntelliJ IDEA(fail)

    Configure First SpringMVC project in IntelliJ IDEA 13 The Mechanism of Spring MVC frameworks by Java ...

  8. Node MonGoDb 简单的增删改查

    let MongoClient = require("mongodb").MongoClient; let url = "mongodb://192.168.200.10 ...

  9. 11-11SQLserver基础--数据库之触发器

    触发器 意义:本质上就是一个特殊的存储过程,只不过不是通过exec来调用执行,而是通过增删改数据库中的操作来执行. 作用:1.将关联的表之间的数据增删改        2.触发器可以操作视图,在视图上 ...

  10. maven错误

    maven-enforcer-plugin (goal "enforce") is ignored by m2e. Plugin execution not covered by ...