记录下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的映射了
浙公网安备 33010602011771号