diff --git a/server/.dockerignore b/server/.dockerignore new file mode 100644 index 0000000..fe1152b --- /dev/null +++ b/server/.dockerignore @@ -0,0 +1,30 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md +!**/.gitignore +!.git/HEAD +!.git/config +!.git/packed-refs +!.git/refs/heads/** \ No newline at end of file diff --git a/server/src/XiangYi.AdminApi/Dockerfile b/server/src/XiangYi.AdminApi/Dockerfile new file mode 100644 index 0000000..a07be6e --- /dev/null +++ b/server/src/XiangYi.AdminApi/Dockerfile @@ -0,0 +1,33 @@ +# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。 + +# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时 +FROM mcr.microsoft.com/dotnet/aspnet:8.0.12 AS base +USER $APP_UID +WORKDIR /app +EXPOSE 8080 + + +# 此阶段用于生成服务项目 +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["Directory.Build.props", "."] +COPY ["src/XiangYi.AdminApi/XiangYi.AdminApi.csproj", "src/XiangYi.AdminApi/"] +COPY ["src/XiangYi.Application/XiangYi.Application.csproj", "src/XiangYi.Application/"] +COPY ["src/XiangYi.Core/XiangYi.Core.csproj", "src/XiangYi.Core/"] +COPY ["src/XiangYi.Infrastructure/XiangYi.Infrastructure.csproj", "src/XiangYi.Infrastructure/"] +RUN dotnet restore "./src/XiangYi.AdminApi/XiangYi.AdminApi.csproj" +COPY . . +WORKDIR "/src/src/XiangYi.AdminApi" +RUN dotnet build "./XiangYi.AdminApi.csproj" -c $BUILD_CONFIGURATION -o /app/build + +# 此阶段用于发布要复制到最终阶段的服务项目 +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./XiangYi.AdminApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值) +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "XiangYi.AdminApi.dll"] \ No newline at end of file diff --git a/server/src/XiangYi.AdminApi/Properties/launchSettings.json b/server/src/XiangYi.AdminApi/Properties/launchSettings.json index 3b7d805..9fafb30 100644 --- a/server/src/XiangYi.AdminApi/Properties/launchSettings.json +++ b/server/src/XiangYi.AdminApi/Properties/launchSettings.json @@ -2,12 +2,20 @@ "profiles": { "XiangYi.AdminApi": { "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": false, - "applicationUrl": "http://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5001" + }, + "Container (Dockerfile)": { + "commandName": "Docker", + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", + "environmentVariables": { + "ASPNETCORE_HTTP_PORTS": "8080" + }, + "publishAllPorts": true, + "useSSL": false } } } \ No newline at end of file diff --git a/server/src/XiangYi.AdminApi/XiangYi.AdminApi.csproj b/server/src/XiangYi.AdminApi/XiangYi.AdminApi.csproj index 13a6cdc..59e2c97 100644 --- a/server/src/XiangYi.AdminApi/XiangYi.AdminApi.csproj +++ b/server/src/XiangYi.AdminApi/XiangYi.AdminApi.csproj @@ -7,6 +7,8 @@ XiangYi.AdminApi true $(NoWarn);1591 + Linux + ..\.. @@ -14,6 +16,7 @@ + diff --git a/server/src/XiangYi.AppApi/Dockerfile b/server/src/XiangYi.AppApi/Dockerfile new file mode 100644 index 0000000..8d374f0 --- /dev/null +++ b/server/src/XiangYi.AppApi/Dockerfile @@ -0,0 +1,33 @@ +# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。 + +# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时 +FROM mcr.microsoft.com/dotnet/aspnet:8.0.12 AS base +WORKDIR /app +EXPOSE 8080 +EXPOSE 8081 + + +# 此阶段用于生成服务项目 +FROM mcr.microsoft.com/dotnet/sdk:8.0.412 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["Directory.Build.props", "."] +COPY ["src/XiangYi.AppApi/XiangYi.AppApi.csproj", "src/XiangYi.AppApi/"] +COPY ["src/XiangYi.Application/XiangYi.Application.csproj", "src/XiangYi.Application/"] +COPY ["src/XiangYi.Core/XiangYi.Core.csproj", "src/XiangYi.Core/"] +COPY ["src/XiangYi.Infrastructure/XiangYi.Infrastructure.csproj", "src/XiangYi.Infrastructure/"] +RUN dotnet restore "./src/XiangYi.AppApi/XiangYi.AppApi.csproj" +COPY . . +WORKDIR "/src/src/XiangYi.AppApi" +RUN dotnet build "./XiangYi.AppApi.csproj" -c $BUILD_CONFIGURATION -o /app/build + +# 此阶段用于发布要复制到最终阶段的服务项目 +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./XiangYi.AppApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值) +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "XiangYi.AppApi.dll"] \ No newline at end of file diff --git a/server/src/XiangYi.AppApi/Properties/launchSettings.json b/server/src/XiangYi.AppApi/Properties/launchSettings.json index 1fe7740..21f0f82 100644 --- a/server/src/XiangYi.AppApi/Properties/launchSettings.json +++ b/server/src/XiangYi.AppApi/Properties/launchSettings.json @@ -2,23 +2,34 @@ "profiles": { "http": { "commandName": "Project", - "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", - "applicationUrl": "http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5000" }, "https": { "commandName": "Project", - "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", - "applicationUrl": "https://localhost:7000;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7000;http://localhost:5000" + }, + "Container (Dockerfile)": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", + "environmentVariables": { + "ASPNETCORE_HTTPS_PORTS": "8081", + "ASPNETCORE_HTTP_PORTS": "8080" + }, + "publishAllPorts": true, + "useSSL": true } } } \ No newline at end of file diff --git a/server/src/XiangYi.AppApi/XiangYi.AppApi.csproj b/server/src/XiangYi.AppApi/XiangYi.AppApi.csproj index 80ce75b..5ccf190 100644 --- a/server/src/XiangYi.AppApi/XiangYi.AppApi.csproj +++ b/server/src/XiangYi.AppApi/XiangYi.AppApi.csproj @@ -7,6 +7,9 @@ XiangYi.AppApi true $(NoWarn);1591 + a5d2bdea-6712-4eb5-a74a-62d88cc66b4b + Linux + ..\.. @@ -15,6 +18,7 @@ +