Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
运行时版本
当前 NCF 开发基线为 net10.0,Dockerfile 的 sdk 与 aspnet 镜像主版本必须同步使用 10.0。如果从旧仓库复制 Dockerfile,请先检查并升级基础镜像。
Docker配置
version: '3.4'
services:
#mysql:
# image: mysql:latest
# ports:
# - "3307:3306"
# restart: always
# environment:
# MYSQL_ROOT_PASSWORD: "123456"
redis:
image: redis:latest
ports:
- "5379:6379"
installer:
image: ${DOCKER_REGISTRY-}installer
build:
context: .
dockerfile: Senparc.Xncf.Installer/Dockerfile
#depends_on:
# - mysql
installer-dapr:
image: "daprio/daprd:latest"
command: [ "./daprd", "-app-id", "installer", "-app-port", "80" ]
network_mode: "service:installer"
depends_on:
- installer
accounts:
image: ${DOCKER_REGISTRY-}accounts
build:
context: .
dockerfile: Senparc.Xncf.Accounts/Dockerfile
accounts-dapr:
image: "daprio/daprd:latest"
command: [ "./daprd", "-app-id", "accounts", "-app-port", "80" ]
network_mode: "service:accounts"
depends_on:
- accounts
senparc-client:
image: ${DOCKER_REGISTRY-}senparcweb
build:
context: .
dockerfile: Senparc.Web/Dockerfile
senparc-client-dapr:
image: "daprio/daprd:latest"
command: ["./daprd","-app-id","senparc-client","-app-port","80"]
network_mode: "service:senparc-client"
depends_on:
- senparc-clientWindows环境运行Docker
点击图标运行

点击镜像查看

添加项目到Docker配置中

当添加了Docker的支持后,会在项目中生成一个Dockerfile的文件
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
# 使用dotnet10.0的sdk来进行编译
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
# 设置工作目录为app
WORKDIR /app
# 开放80端口
EXPOSE 80
# 开放443端口
EXPOSE 443
# 使用dotnet10.0的sdk来进行编译
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
# 将项目编译到src
WORKDIR /src
# 复制Senparc.Web.csproj项目到Senparc.Web目录下
COPY ["Senparc.Web/Senparc.Web.csproj", "Senparc.Web/"]
# 执行dotnet restore的还原包命令
RUN dotnet restore "Senparc.Web/Senparc.Web.csproj"
# 复制所有的文件
COPY . .
# 定位工作目录到/src/Senparc.Web下
WORKDIR "/src/Senparc.Web"
# 执行dotnet build命令,将Release的环境build到app/build目录中
RUN dotnet build "Senparc.Web.csproj" -c Release -o /app/build
# 重命名build为publish目录
FROM build AS publish
# 执行dotnet publish命令,将Release的环境publish到app/publish目录中
RUN dotnet publish "Senparc.Web.csproj" -c Release -o /app/publish
# 最后
FROM base AS final
# 定位工作目录为app
WORKDIR /app
# 从publish目录复制文件到app/publish
COPY --from=publish /app/publish .
# 进入项目执行dotnet Senparc.Web.dll
ENTRYPOINT ["dotnet", "Senparc.Web.dll"]