之前一直没整这个,今天来尝试下。
首先新建项目勾选docker支持,平台选择Linux
接着将整个解决方案上传的Linux服务器上
然后cd 到解决方案sln 的下层文件夹,即csproj项目文件有Dockerfile的那个文件夹。
然后按照微软官方文件运行
docker build -t fyjwebapp .
这里会报错
COPY failed: file not found in build context or excluded by .dockerignore: stat WebApplication1/WebApplication1.csproj: file does not exist
于是我转到上一层sln解决方案那个文件夹执行
docker build -t fyjwebapp ./WebApplication1
还是会报错COPY failed: file not found in build context or excluded by .dockerignore: stat WebApplication1/WebApplication1.csproj: file does not exist
看这个报错路径再打开Dockerfile查看内容感觉应该是将Dockerfile文件复制到sln 解决方案的文件夹。
然后运行
docker build -t fyjwebapp .
果然成功了。
然后启动容器
docker run -it --rm -p 5000:8080 --name fyjwebapp_sample fyjwebapp
--rm 表示在容器退出时自动删除
如果后台运行将 -it 改为 -itd
访问主机:5000 成功
第二种
实现上传编译后的文件夹并部署到docker
将网站编译后的bin目录上传到Linux服务器,新建Dockerfile 文件
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime WORKDIR /app COPY / ./ ENTRYPOINT ["dotnet", "WebApplication1.dll"]
注意COPY 这一行,官方是COPY published/ ./ 因为我没用dotnet publish -c Release -o published 命令生成目录
启动容器和上面一样
删除映像
docker rmi fyjwebapp