记录下asp.net core 6+ 的dockerfile部署

右键你需要生成docker的项目,添加->docker支持,最后生成一个Dockerfile文件

看下里面的数据

docker build -t aspnetapp .

注意最后的空格+. 这个是上下文的意思.返回Dockerfile的上一级目录,使用这个指令

 docker build -t webapi:v1 -f .\WebApi\Dockerfile .

 就可以build成功

一些小细节

1.容器和宿主机的通信ip可以改成 http://host.docker.internal (注意需要http://)

2.可以直接在命令里面加参数 会直接传递给main的args,比如下面我传递了ip和port给程序

docker run -it --rm -p 5000:80 --name test webapi:v1 --ip=127.0.0.1 --port=5000

  

接下来介绍实战,我这边认为这种方式比较符合我现在的需求(在centos系统)

安装docker和拉取镜像我就不介绍了

先在项目下编译,生成bin/Publish

dotnet publish -o bin/Publish

然后在asp.net core的项目下建立Dockerfile

 

FROM mcr.microsoft.com/dotnet/aspnet:7.0  
WORKDIR /app    

请在Dockerfile的目录下执行,生成镜像

docker build -t demo .

生成镜像后,创建容器,这里是用-v指定宿主机的目录映射,我这里是在命令行指定 ENTRYPOINT 

docker run -d -p 8083:5000 -m 512M --entrypoint dotnet --name demo -v /Czb/test-deployment-library/WebAp/bin/Publish:/app demo WebAp.dll

然后写个.sh的批处理文件

echo "pull code"
git -C /Czb/test-deployment-library/ pull
echo "build code"
dotnet publish /Czb/test-deployment-library/WebAp/ -o /Czb/test-deployment-library/WebAp/bin/Publish

echo "del contaion"
docker rm -f demo

echo "run contain"
docker run -d -p 8083:5000 -m 512M --entrypoint dotnet --name demo -v /Czb/test-deployment-library/WebAp/bin/Publish:/app demo WebAp.dll
echo "done"

这样每次提交代码后,我只需运行一行批处理文件就可以完成项目部署在docker的映射了

 

posted @ 2023-11-10 15:54  大大只植物  阅读(130)  评论(0)    收藏  举报