簡體   English   中英

Docker-Compose 用於 Windows 容器上的 ASP.Net 核心

[英]Docker-Compose for ASP.Net Core on Windows Containers

我正在嘗試在 Windows 基礎上構建一個 ASP.Net Core 容器,因為我想測試一些 AD 查詢。 同時,我想與容器共享我的開發文件夾,以便我可以即時編輯文件,而無需每次都重新編譯容器。 在 Linux 和 laravel 上它工作得很好:

     volumes:
        - ./:/var/www

在 windows 上,我的 docker 文件如下所示:

FROM mcr.microsoft.com/dotnet/core/sdk:latest AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:latest
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "project.dll"]

我的作曲家是這樣的:

version: '3.5'
services:

  #ASP
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:80"
    environment:
      - "ASPNETCORE_URLS=http://+:80"
    container_name: app
    working_dir: /app
    #restart: on-failure
    volumes:
      - type: bind
        source: .\
        target: c:\app
    entrypoint: ["dotnet", "project.dll"]

一旦我添加卷部分,我就會收到以下消息:

It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download

沒有卷我至少可以正常運行它,但嘗試一些東西有點可怕,)

知道我做錯了什么嗎?


更新我發現了錯誤。 掛載后的應用數據為空,但應包含應用文件。

C:\app>dir
 Volume in drive C has no label.
 Volume Serial Number is 76CF-40D6

 Directory of C:\app

05/03/2020  11:34 AM    <DIR>          .
05/03/2020  11:34 AM    <DIR>          ..
05/01/2020  10:25 PM               162 appsettings.Development.json
05/01/2020  10:25 PM               192 appsettings.json
05/03/2020  11:34 AM           106,534 project.deps.json
05/03/2020  11:34 AM             9,216 project.dll
05/03/2020  11:34 AM           169,984 project.exe
05/03/2020  11:34 AM             1,864 project.pdb
05/03/2020  11:34 AM               224 project.runtimeconfig.json
05/03/2020  11:34 AM            35,840 project.Views.dll
05/03/2020  11:34 AM             3,544 project.Views.pdb
05/03/2020  11:34 AM               490 web.config
05/03/2020  11:34 AM    <DIR>          wwwroot
              10 File(s)        328,050 bytes
               3 Dir(s)  21,299,187,712 bytes free

我的問題仍然是,我需要更改什么才能在本地磁盤上擁有 app 文件夾?


另一個更新。 我安裝了文件夾,但不幸的是,與 Lavavel 不同,我無法即時編輯文件,即使我將所有內容都更改為 Razor。 也許我必須以某種方式將另一個文件夾添加到容器中...目前我在想最好的方法是在本地安裝 IIS ...


更新,終於成功了。 我明天會更新解決方案。

好的,這就是我必須改變的解釋。

  1. 激活 Razor

    • 在 project.csproj 文件中:

    PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.3" Condition="'$(Configuration)' == 'Debug'"

    • 在launchsettings.json

    "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES":"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"

  2. 更改為 Razor

    • 編輯 Startup.cs

    services.AddControllersWithViews().AddRazorRuntimeCompilation();

     services.Configure<MvcRazorRuntimeCompilationOptions>(options => { var libraryPath = Path.GetFullPath( Path.Combine(HostEnvironment.ContentRootPath, "..", "ProjectFolderName")); options.FileProviders.Add(new PhysicalFileProvider(libraryPath)); });

(重要的是項目文件夾名稱)

  1. 將項目文件夾添加到容器中

    卷:-.\bin\Debug\netcoreapp3.1:c:\app:ro -.:c:\project

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM