diff --git a/Apimanager_backend/Controllers/UploadController.cs b/Apimanager_backend/Controllers/UploadController.cs index 2d5e22b..b7fc80f 100644 --- a/Apimanager_backend/Controllers/UploadController.cs +++ b/Apimanager_backend/Controllers/UploadController.cs @@ -129,7 +129,7 @@ namespace Apimanager_backend.Controllers // 5. 创建存储目录 - var uploadsFolder = Path.Combine(basePath); + var uploadsFolder = Path.Combine(basePath,"uploads"); var filePath = Path.Combine(uploadsFolder, "logo.png"); // 7. 处理并保存图片 @@ -188,7 +188,7 @@ namespace Apimanager_backend.Controllers // 3. 保存到网站根目录 - var icoPath = Path.Combine(_environment.WebRootPath, "favicon.ico"); + var icoPath = Path.Combine(basePath,"uploads", "favicon.ico"); using (var stream = new FileStream(icoPath, FileMode.Create)) { await file.CopyToAsync(stream); diff --git a/Apimanager_backend/Program.cs b/Apimanager_backend/Program.cs index ec6bbb0..a243ff7 100644 --- a/Apimanager_backend/Program.cs +++ b/Apimanager_backend/Program.cs @@ -6,6 +6,7 @@ using Apimanager_backend.Filters.ExceptionFilter; using Apimanager_backend.Services; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders; using Serilog; using Serilog.Sinks.MariaDB.Extensions; @@ -158,6 +159,13 @@ app.Use(async (context, next) => }); */ +app.UseStaticFiles(new StaticFileOptions +{ + FileProvider = new PhysicalFileProvider( + Path.Combine(Directory.GetCurrentDirectory(), "uploads")), + RequestPath = "/uploads" +}); + app.MapControllers(); app.Run(); diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..77a4830 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# 使用 .NET 8.0 SDK 作为构建环境 +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /src + +# 1. 复制解决方案文件和所有项目的.csproj文件(自动包含所有项目) +COPY *.sln . +COPY */*.csproj ./ +# 为每个项目创建目录并移动.csproj文件到正确位置 +RUN for file in $(ls *.csproj); do mkdir -p ${file%.*}/ && mv $file ${file%.*}/; done + +# 2. 恢复所有项目的依赖 +RUN dotnet restore "Apimanager_backend.sln" + +# 3. 复制所有源代码 +COPY . . + +# 4. 构建并发布主项目(假设Apimanager_backend是启动项目) +WORKDIR /src/Apimanager_backend +RUN dotnet publish -c Release -o /app/publish --no-restore + +# 5. 使用运行时镜像 +FROM mcr.microsoft.com/dotnet/aspnet:8.0 +WORKDIR /app +COPY --from=build /app/publish . + +# 6. 配置容器 +ENV ASPNETCORE_ENVIRONMENT=Development +EXPOSE 8080 +ENTRYPOINT ["dotnet", "Apimanager_backend.dll"] \ No newline at end of file