# dotnet-jenkins **Repository Path**: GDIKodiak/dotnet-jenkins ## Basic Information - **Project Name**: dotnet-jenkins - **Description**: 一个用于构建.Net Core + Docker的自动化集成Docker构建文件 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2017-12-18 - **Last Updated**: 2024-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DotnetCore-Jenkins 这是一个基于[Docker + Jenkins 持续部署 ASP.NET Core 项目](http://www.cnblogs.com/JacZhu/p/6814848.html)这篇博客改写的Dockerfile,其用途是使用Jenkins自动化构建 .Net Core项目并自动生成相应的Docker镜像。 使用它生成的镜像拥有以下功能 * Jenkins基本功能 * 在容器内运行 .Net Core CLI * 还原与构建 .Net Core项目 * 构建Docker镜像 相对于原版Dockerfile,现版本进行了以下变动 * 将容器内系统镜像源由中科大变更为阿里云 * 添加部分Docker依赖包 * 修改了 .Net Core SDK下载地址使版本升级至2.0.x ## 如何使用 上传Dockerfile至目标机器,并运行命令 ```bash docker build -t {在这里取个名字} . ``` 例如 ```bash docker build -t dotnet-jenkins . ``` 等待镜像构建完毕 新建一个文件夹用于挂载数据卷 例如```mkdir ~/ProgramData/docker/jenkins``` 然后赋予这个文件夹权限 例如```sudo chown -R 1000 ProgramData``` 最后运行Jeknins容器 ```bash docker run -p 8080:8080 -p 50000:50000 \ -v /root/ProgramData/docker/jenkins:/var/jenkins_home \ -v /bin/docker:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -d dotnet-jenkins ``` 之后便可继续遵循[Docker + Jenkins 持续部署 ASP.NET Core 项目](http://www.cnblogs.com/JacZhu/p/6814848.html)这篇博客完成 .Net Core的Docker镜像自动化构建工作 *** ## CentOS用户注意 由于Jenkins官方的Docker是基于Debian构建的,当使用RedHat Enterprise Linux系的Linux系统(如CentOS)作为Docker宿主机时,会因系统结构不同而产生错误,你可能会遇到如下的问题(我反正是撞见了): 问题 ```bash /usr/bin/docker: line 2: /etc/sysconfig/docker: No such file or directory ``` 运行命令```cat /usr/lib/systemd/system/docker.service```查看docker服务配置文件ExecStart行。如果你是如下配置 ![图片](https://gitee.com/GDIKodiak/dotnet-jenkins/raw/master/images/error.PNG) 修改docker run启动命令的参数,把原先```-v /bin/docker:/usr/bin/docker```变更为```-v /bin/docker-current:/usr/bin/docker``` 完整命令如下 ```bash docker run -p 8080:8080 -p 50000:50000 \ -v /root/ProgramData/docker/jenkins:/var/jenkins_home \ -v /bin/docker-current:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -d dotnet-jenkins ``` *** 问题 ```bash docker: error while loading shared libraries: libdevmapper.so.1.02: cannot open shared object file: No such file or directory ``` 此问题以及相似的系列问题出现的原因是容器内缺乏某些docker需要的依赖包,如上面的```libdevmapper.so.1.02```,有两种解决方案 一是通过挂载数据卷解决,在docker run参数中添加```-v /lib64/libdevmapper.so.1.02:/usr/lib/libdevmapper.so.1.02``` 完整命令如下 ```bash docker run -p 8080:8080 -p 50000:50000 \ -v /root/ProgramData/docker/jenkins:/var/jenkins_home \ -v /bin/docker-current:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /lib64/libdevmapper.so.1.02:/usr/lib/libdevmapper.so.1.02 \ -d dotnet-jenkins ``` 二是通过在Dockerfile中使用apt-get安装相应缺少的依赖包来解决问题