使用Jenkins部署asp.net core

首先盗图一张

1.在Github上创建一个测试仓库

2.创建基于Asp.net Core的MVC项目

 运行解决方案,验证代码没有问题,然后将代码迁入Github

3.添加Docker支持

项目-->添加-->Docker 支持

提示框选择【Linux】,点击确定

系统会自动添加相应的Dockerfile文件和docker-compose文件

此处使用默认的Dockerfile,仅修改端口号,该端口号需要跟shell文件对应

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

修改Dockerfile文件的属性

向项目中添加setup.sh文件(之后的Jenkins会用到,此处与代码并无关系)

 

文件中的内容如下: 

image_version=`date +%Y%m%d%H%M`;
echo $image_version;
# cd Jenkins2Docker
git pull --rebase origin master;
docker stop jenkins2docker;
docker rm jenkins2docker;
docker build -t jenkins2docker:$image_version .;
docker images;
docker run -p 10001:80 -d --name jenkins2docker jenkins2docker:$image_version;
# -v ~/docker-data/house-web/appsettings.json:/app/appsettings.json -v ~/docker-data/house-web/NLogFile/:/app/NLogFile   --restart=always
docker logs jenkins2docker;
#删除build过程中产生的镜像    #docker image prune -a -f
docker rmi $(docker images -f "dangling=true" -q)

完成以上操作后,将代码迁入Github。

此处需要注意的是

 

4.配置Jenkins

4.1新建一个“自由风格的软件项目”

4.2设置General信息

4.3配置源码信息

4.4构建触发器

(H/2表示2分钟做一次查询)

4.5设置构建环境

4.6构建选择shell

4.7保存

点击【应用】-->【保存】

页面跳转后,点击【立即构建】(此处不点击,2分钟内也会自动构建

4.8查看构建结果

如图显示了5次构建,头三次的红色表示构建失败,4、5次的蓝色表示构建成功

5.验证结果

5.1查看镜像

镜像到Tag是在shell文件中设置的,由时间字符串拼接而成,可以看到.net core生成的镜像还是很小的,毕竟包含了一个253M的run-time。

5.2查看容器

 

IMAGE:此处看到容器构建依赖的镜像,确实是我们刚刚生成的镜像。

STATUS:如果status的状态不是Up,可以通过Jenkins构建的后台查看是否构建出现问题。

PORTS:10001->80,80是我们在dockerfile中expose到端口,10001是容器创建时映射到服务器到端口。

5.3查看网址

 

6.写在最后

不知是不是shell文件写的有问题,亦或是我该改设置dockerfile生成路径?

代码迁入时需要修改下Dockerfile的路径,即从Jenkins2Docker内改到上一级的目录。

有明白的朋友可以留个言

 

7.参考

https://cloud.tencent.com/developer/news/223449

https://www.cnblogs.com/sunshine-wy/p/9860599.html

https://www.cnblogs.com/TomGui/archive/2017/04/06/6673084.html

 

8.常见错误

8.1.Dockerfile编译报错

Failed to build: Error parsing reference: “microsoft/dotnet:2.1-runtime AS base” is not a valid repository/tag

解决方法:

该问题出现的原因是docker的版本过低,具体如下

FROM microsoft/aspnetcore-build:2.0 AS buildenv Error parsing reference

centos7 docker升级到最新稳定版本

 

8.2报错:镜像被多个repositories引用

Error when deleting images - image is referenced in multiple repositories

docker rmi -f <IMAGE_ID>

参考:https://github.com/portainer/portainer/issues/497

 

8.3删除虚挂镜像

docker rmi $(docker images -f "dangling=true" -q)

参考:http://www.cnblogs.com/stulzq/p/8962388.html

 

posted @ 2019-04-01 17:30  imstrive  阅读(1717)  评论(0编辑  收藏  举报