应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

docker Jenkins发布.net core

5924人阅读 2021/8/6 12:20 总访问:5194421 评论:1 收藏:0 手机
分类: docker

拉取镜像:


由于本身Jenkins镜像没有.net core环境,所以我们拉取一个制作好的镜像,里边包含Jenkins环境和.net core3.1与5.0的环境以及git的环境。因为我们要使用docker下面的Jenkins来发布git上面的.net core项目,这些都是必须的。

  1. docker pull xsw2014/net-jenkins:1.0

安装完后查看镜像:

运行镜像:

  1. docker run -u root --rm -d -p 8000:8080 --name dotnetjenkins \
  2. -v /usr/bin/docker:/usr/bin/docker \
  3. -v /var/run/docker.sock:/var/run/docker.sock \
  4. -v /etc/sysconfig/docker:/etc/sysconfig/docker \
  5. -v /home/dockerVolumes2/jenkins_home:/var/jenkins_home \
  6. xsw2014/net-jenkins:1.0


这句话第1行意思是用8000映射docker里面8080端口如果你想外网访问的时候用1011那么就修改为1011:8080。

第2至第4行的意思是docker内部可以调用外部docker来进行打包,因为jenkins是在docker容器内那么容器内是没法再使用docker命令打包的,这个时候我们需要第二至第四行的语句实现内部调用docker了。

第5行的意思为将本地的/home/dockerVolumes2/jenkins_home映射到/var/jenkins_home 。如果你后面dotnet publish了需要打包后的文件就可以到本地的/home/dockerVolumes2/jenkins_home查看了

第6行是你拉取的镜像名,如果是你自己制作的换成你自己的就行了

然后进入容器看看基础环境有没有:
docker exec -it 8d9d397631935f bin/sh

运行Jenkins:

输入你的ip加上我们映射的端口8000

使用命令查看初始化密码:

  1. //进入容器
  2. docker exec -it 8d9d397631935f bin/sh
  3. //进入到密码查看目录
  4. cd /var/jenkins_home/secrets/
  5. //显示当前文件夹下文件
  6. ls
  7. //显示initialAdminPassword内容
  8. cat initialAdminPassword

输入密码即可登录进去

登录进去就可以修改账户了,不然下次登录的默认账户是admin密码就是上面查看的


使用Jenkins创建一个自由风格的项目

点击New Item创建项目:

然后输入名字选择自由风格的项目,其他类型的项目装插件就能找到

在源代码管理中选择git

把你项目的url填写好,凭证的话如果是公共项目可以不填写。如果凭证填写有问题就会导致项目拉取不下来,这个在使用Jenkins发布的时候日志里边可以看到的。这里的git测试项目地址:https://github.com/aojiancc/DockerJenkinsTest 大家也可以直接用来测试。就是一个新建的core3.1 webapi的项目。

然后在构建里边选择shell命令构建,把命令写好

其实Jenkins最基础的核心就是:帮你拉取代码帮你执行发布命令而已。所以有时候如果jenkins发布有问题,那些命令你可以自己手动执行下试试,来找问题。当然jenkins还支持不同的分支发布到不同的环境,集群发布等,但基础的核心内容还是拉取项目和执行发布命令。

把使用的命令贴一下:

  1. dotnet restore
  2. dotnet build
  3. dotnet publish
  4. #输出一提示的话
  5. echo "Successfully^_^ ......................................................................................"
  6. #输出当前地址,可以在日志中看到当前路径,检查一些路径问题
  7. pwd
  8. #docker stop helloworldcontainer
  9. #docker rm helloworldcontainer
  10. #docker rmi hello-world
  11. #构建镜像命令
  12. docker build -t hello-world .
  13. #运行镜像
  14. docker run --name helloworldcontainer -p 5000:80 -d hello-world

然后点击存储然后构建即可。

如果没有默认构建一下我们自己手动点击构建

在项目里边也可以,菜单都一样的

如果一切正常编译成功的效果就是这样

我们可以看看日志:

前面都是拉取git项目的日志:

拉取完了后就是执行你编写的命令了:
还是很长的,带加号的都是我们执行的命令,日志记录还是非常详细的找错也比较方便。

这些命令都成功了,最后就是执行docker命令创建你发布的.net core项目的容器了

成功后输入你发布的.net core项目地址即可访问:
这样就搞定了

常见错误-dockerfile文件路径的问题

我们使用vs新建一个带有docker的项目,doockerfile文件的位置是和这些类文件一起的

这外面如果没有dockerfile按照上面的命令执行就会有路径问题:
以前我们讲没有使用jinkins,直接使用docker发布也会存在这种路径问题

执行报错,我们看看日志:

其实前面所有的步骤都执行成功了,就是找不到dockerfile的文件。其实我们在给命令的时候给了一个pwd查看当前目录的位置,就是方便看一下会不会存在路径的问题。这里我们可以根据看到当前的路径是:/var/jenkins_home/workspace/DockerJenkinsTest

  1. + pwd
  2. /var/jenkins_home/workspace/DockerJenkinsTest

这个位置根本就没有dockerfile应该还加入一次DockerJenkinsTest才可以。

所以可以在外面加一个dockerfile上传即可:

上传了github也能看到

然后重新执行一次发布,jinkins会自动去拉取更改

当然路径问题其实我们也可以通过修改命令或者dockerfile的内容来解决,还是很灵活的


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价