# 容器名字
CODE_PATH='/code/perry'
CONTAINER_NAME='perry-identity-4'
PUBLISH_PATH='/code/perry/Perry.Identity4/bin/Debug/net5.0/publish'
PROJECT_PATH='./Perry.IDentity4/Perry.Identity4.csproj'
# 跳到代码路径
cd $CODE_PATH
# 拉取代码
git pull
# 发布项目
dotnet build $PROJECT_PATH
dotnet publish $PROJECT_PATH
# 删除运行中的容器
docker rm -f $CONTAINER_NAME
# 获取到日期字符串 20210911
DATE=$(date +%Y%m%d)
# 删除当天其他的镜像
docker rmi -f $CONTAINER_NAME:$DATE
# 为latest镜像打个日期的标签
docker tag $CONTAINER_NAME:latest $CONTAINER_NAME:$DATE
# 删除latest镜像
docker rmi -f $CONTAINER_NAME:latest
# 跳转到发布目录
cd $PUBLISH_PATH
# 构建新的镜像
docker build -t $CONTAINER_NAME:latest .
# 实例化容器运行新镜像
# 如果是构建服务器,可以改为推送到远程docker仓库,再由仓库的webhook触发新的运行任务
docker run -d -p 18002:443 --name $CONTAINER_NAME $CONTAINER_NAME
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
EXPOSE 443
COPY . .
ENTRYPOINT ["dotnet", "Perry.Identity4.dll"]
简单的CICD(发现下方图其实没画对,如果是推送docker仓库的话,应该是由docker仓库的webhook触发docker run任务)