Has*_*han 6 asp.net docker docker-compose asp.net-core
我正在尝试在 docker 容器中运行 aspnet core 应用程序。我在物理文件提供程序方面遇到问题。
在我的应用程序startup.cs中,我使用以下代码作为物理文件提供程序并使用别名进行映射
  app.UseFileServer(new FileServerOptions
        {
            FileProvider = new PhysicalFileProvider("G:\\Work\\LMS\\lms-data"),
            RequestPath = new PathString("/lms-data"),
            EnableDirectoryBrowsing = false
        });
现在我的docker文件是
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
ENV ASPNETCORE_ENVIRONMENT=Development
ENV DOTNET_USE_POLLING_FILE_WATCHER=1
WORKDIR /app
EXPOSE 5000
EXPOSE 5001
COPY ["SharedKernal/SharedKernal.csproj", "SharedKernal/"]
COPY ["LMS.Entities/LMS.Entities.csproj", "LMS.Entities/"]
COPY ["LMS.Core/LMS.Core.csproj", "LMS.Core/"]
COPY ["LMS.Infrastructure/LMS.Infrastructure.csproj", "LMS.Infrastructure/"]
COPY ["LMS.Web/LMS.Web.csproj", "LMS.Web/"]
RUN dotnet restore "LMS.Web/LMS.Web.csproj"
RUN mkdir /lms-data
COPY . .
WORKDIR "/app/LMS.Web"
CMD [ "/bin/bash","-c","dotnet restore && dotnet watch run" ]
我的 docker 撰写文件是:
version: "3.4"
services:
  lmsapp:
    image: lmsapp
    container_name: lmsappv1
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: "/app/LMS.Web"
    volumes: 
      - ".:/app"
    ports:
      - "5000:5000"
      - "5001:5001"
    networks: 
      - mongo_network
  mongodb:
    image: mongo
    container_name: mongo_db
    networks: 
      - mongo_network
    ports: 
      - "27017:27017"
networks: 
  mongo_network:
    driver: bridge
现在,当我在运行 docker-compose build 后运行命令 docker-compose up 时
我收到以下错误
System.ArgumentException: The path must be absolute. (Parameter 'root')
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
   at LMS.Web.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in /app/LMS.Web/Startup.cs:line 130
如何解决这个错误?
当我运行 docker-compose up 时,我遇到的另一个问题总是恢复包。如何避免这种情况?
小智 0
而不是这个:
FileProvider = new PhysicalFileProvider("G:\\Work\\LMS\\lms-data"),
尝试这个:
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"lms-data"))
| 归档时间: | 
 | 
| 查看次数: | 1838 次 | 
| 最近记录: |