Docker部署
精简发布文件
如果需要精简发布后的文件,也就是删除不必要的文件夹,可以编辑 Web 项目的 .csproj 并添加 <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>,如 :
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
</PropertyGroup>
若无需生成 .pdb 文件,可以继续添加:
<PropertyGroup>
<DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
34.2.1 关于 Docker 部署
在 Docker 中部署网站有两种方式:
发布后构建:此方式是先发布网站后在再构建镜像,这样可以减少不必要的构建层,而且还能缩减镜像大小。(推荐)编译+构建+发布:也就是说在Dockerfile中配置网站从构建到发布的完整过程,此方式会速度慢,而且会产生冗余层,增加镜像大小。
34.2.2 两种方式构建
34.2.2.1 发布后构建
- 👉 编写
Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY . /app
WORKDIR /app
EXPOSE 80
#linux安装
RUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main contrib non-free" > /etc/apt/sources.list
RUN apt-get update && apt-get -y install libfontconfig1
ENTRYPOINT ["dotnet", "ThingsGateway.Web.Server.dll","--urls","http://*:7200"]
- 👉 将
Dockerfile文件拷贝到发布根目录
将编写好的 Dockerfile 文件(注意 D 大写)拷贝到发布网站的根目录下。
提示git仓库中已经包含 Dockerfile 文件
- 👉 构建
Docker镜像
在网站发布后的路径根目录下(必须含 Dockerfile)打开 CMD/PowerShell 只需构建命令:
docker build -t 网站名称:网站版本号 .
特别注意
后端的 . 不能省略
- 👉 启动镜像
docker run --name 容器名称 -p 5000:80 --restart=always -d 网站名称:网站版本号
.NET8 中 80 端口问题在使用 .NET8,默认的端口由原来的 80 端口变成了 8080。查看相关说明
- 👉 在
Dockerfile所在路径构建
接下来的步骤和上述步骤一致,不再重复编写。