docker Jenkins发布.net core 电脑版发表于:2021/8/6 12:20 ###拉取镜像: tn5>由于本身Jenkins镜像没有.net core环境,所以我们拉取一个制作好的镜像,里边包含Jenkins环境和.net core3.1与5.0的环境以及git的环境。因为我们要使用docker下面的Jenkins来发布git上面的.net core项目,这些都是必须的。 ``` docker pull xsw2014/net-jenkins:1.0 ```  安装完后查看镜像:  ###运行镜像: ``` docker run -u root --rm -d -p 8000:8080 --name dotnetjenkins \ -v /usr/bin/docker:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/sysconfig/docker:/etc/sysconfig/docker \ -v /home/dockerVolumes2/jenkins_home:/var/jenkins_home \ xsw2014/net-jenkins:1.0 ```  tn2>这句话第1行意思是用8000映射docker里面8080端口如果你想外网访问的时候用1011那么就修改为1011:8080。<br/> 第2至第4行的意思是docker内部可以调用外部docker来进行打包,因为jenkins是在docker容器内那么容器内是没法再使用docker命令打包的,这个时候我们需要第二至第四行的语句实现内部调用docker了。<br/> 第5行的意思为将本地的/home/dockerVolumes2/jenkins_home映射到/var/jenkins_home 。如果你后面dotnet publish了需要打包后的文件就可以到本地的/home/dockerVolumes2/jenkins_home查看了<br/> 第6行是你拉取的镜像名,如果是你自己制作的换成你自己的就行了 **然后进入容器看看基础环境有没有:** docker exec -it 8d9d397631935f bin/sh  ###运行Jenkins: >输入你的ip加上我们映射的端口8000  >使用命令查看初始化密码: ``` //进入容器 docker exec -it 8d9d397631935f bin/sh //进入到密码查看目录 cd /var/jenkins_home/secrets/ //显示当前文件夹下文件 ls //显示initialAdminPassword内容 cat initialAdminPassword ```  输入密码即可登录进去 >登录进去就可以修改账户了,不然下次登录的默认账户是admin密码就是上面查看的 <br/> ###使用Jenkins创建一个自由风格的项目 tn4#点击New Item创建项目:  tn4#然后输入名字选择自由风格的项目,其他类型的项目装插件就能找到  tn4#在源代码管理中选择git 把你项目的url填写好,凭证的话如果是公共项目可以不填写。如果凭证填写有问题就会导致项目拉取不下来,这个在使用Jenkins发布的时候日志里边可以看到的。这里的git测试项目地址:https://github.com/aojiancc/DockerJenkinsTest 大家也可以直接用来测试。就是一个新建的core3.1 webapi的项目。  tn4#然后在构建里边选择shell命令构建,把命令写好 其实Jenkins最基础的核心就是:帮你拉取代码帮你执行发布命令而已。所以有时候如果jenkins发布有问题,那些命令你可以自己手动执行下试试,来找问题。当然jenkins还支持不同的分支发布到不同的环境,集群发布等,但基础的核心内容还是拉取项目和执行发布命令。  把使用的命令贴一下: ``` dotnet restore dotnet build dotnet publish #输出一提示的话 echo "Successfully^_^ ......................................................................................" #输出当前地址,可以在日志中看到当前路径,检查一些路径问题 pwd #docker stop helloworldcontainer #docker rm helloworldcontainer #docker rmi hello-world #构建镜像命令 docker build -t hello-world . #运行镜像 docker run --name helloworldcontainer -p 5000:80 -d hello-world ``` 然后点击存储然后构建即可。 **如果没有默认构建一下我们自己手动点击构建**  在项目里边也可以,菜单都一样的  tn4#如果一切正常编译成功的效果就是这样  >**我们可以看看日志:**  **前面都是拉取git项目的日志:**  **拉取完了后就是执行你编写的命令了:** 还是很长的,带加号的都是我们执行的命令,日志记录还是非常详细的找错也比较方便。  **这些命令都成功了,最后就是执行docker命令创建你发布的.net core项目的容器了**  **成功后输入你发布的.net core项目地址即可访问:** 这样就搞定了  ###常见错误-dockerfile文件路径的问题 我们使用vs新建一个带有docker的项目,doockerfile文件的位置是和这些类文件一起的  这外面如果没有dockerfile按照上面的命令执行就会有路径问题: 以前我们讲没有使用jinkins,直接使用docker发布也会存在这种路径问题  **执行报错,我们看看日志:**  其实前面所有的步骤都执行成功了,就是找不到dockerfile的文件。其实我们在给命令的时候给了一个pwd查看当前目录的位置,就是方便看一下会不会存在路径的问题。这里我们可以根据看到当前的路径是:/var/jenkins_home/workspace/DockerJenkinsTest ``` + pwd /var/jenkins_home/workspace/DockerJenkinsTest ``` 这个位置根本就没有dockerfile应该还加入一次DockerJenkinsTest才可以。 所以可以在外面加一个dockerfile上传即可:  上传了github也能看到  然后重新执行一次发布,jinkins会自动去拉取更改  当然路径问题其实我们也可以通过修改命令或者dockerfile的内容来解决,还是很灵活的 