Dockerfile 配置
#使用MYSQL请使用以下命令
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic
#设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
#设置环境变量,http请求在linux下面有可能出现https访问被拒绝问题
ENV DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 0
WORKDIR api
#项目设置里面将所有需要输出的xml文件输出到同一个doc目录下面
ADD ./bin/Release/netcoreapp3.1/publish/ /api/
ENTRYPOINT ["dotnet","/api/xxx.api.dll","--environment","test"]
jenkins配置
#转到jenkins提取到源码之后的文件夹目录下面
cd /usr/lib/jenkins/jenkins_home/workspace/dotnet-xxx-api-test
#文件权限操作
chmod 755 xxx.api.sln
#配置环境变量解决nuget还原过程中ssl握手不信任问题
export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0
#关于清理nuget包缓存的问题,如果是nuget.org的包,我们不需要,因为严格更新版本。
#如果是公司内部的nuget包,发布包我们是可以覆盖当前版本的,那么需要清理。
#清理nuget缓存,如果需要的话,清理本机的nuget包缓存的话
dotnet nuget locals all -c
#强制清除指定的nuget包,如果需要的话
rm -rf /home/jenkins/.nuget/packages/xxx.netcore.*
#还原依赖 nuget.config文件内含有nuget.org和公司内部的包地址
dotnet restore --configfile nuget.config
#清除上一次输出问题以及obj文件夹
dotnet clean -c Release
#编译处理
dotnet build -c Release
#发布处理,使用发布路径下面的项目地址进行打包处理
dotnet publish -c Release
#基于docker镜像文件的别名处理
image_version='xxx-test-latest';
#转到项目文件下面的docker文件目录
cd /usr/lib/jenkins/jenkins_home/workspace/dotnet-xxx-api-test/xxx.api
#输出当前目录
pwd
# build镜像并且打上tag
docker build -t xxx-api-test:$image_version .;
#登录阿里云私有镜像仓库
#docker login --username=*** registry.cn-shenzhen.aliyuncs.com
#打阿里云Tag
docker tag xxx-api-test:$image_version registry-vpc.cn-shenzhen.aliyuncs.com/xxx/xxx-api-test:$image_version
#推送到阿里云镜像
docker push registry-vpc.cn-shenzhen.aliyuncs.com/xxx/xxx-api-test:$image_version
#删除本地docker镜像
docker rmi -f xxx-api-test:$image_version
docker rmi -f registry-vpc.cn-shenzhen.aliyuncs.com/xxx/xxx-api-test:$image_version
#触发镜像
/usr/bin/curl ***