Docker - образ Windows IIS - «Remove-Website» не распознается как внутренняя или внешняя команда, - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь запустить мой ASP.NET Web API в док-контейнере на сервере Windows 2016 . Вот мой файл докера:

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY TestWebAPI/*.csproj ./TestWebAPI/
COPY TestWebAPI/*.config ./TestWebAPI/
RUN nuget restore

# copy everything else and build app
COPY TestWebAPI/. ./TestWebAPI/
WORKDIR /app/TestWebAPI
RUN msbuild /p:Configuration=Release

FROM microsoft/iis:10.0.14393.206

RUN Remove-Website -Name 'Default Web Site'
RUN New-Website -Name 'TestWebApi' -Port 80 \
    -PhysicalPath 'c:\app\TestWebAPI\' -ApplicationPool '.NET v4.5'
EXPOSE 80

CMD Write-Host IIS Started... ; \
    while ($true) { Start-Sleep -Seconds 3600 }

Я использую следующие команды для сборки приложения:

 docker image build --tag v2 --file .\Dockerfile .

После запуска скрипта я получаю следующую ошибку:

«Remove-Website» не распознается как внутренняя или внешняя команда

Я видел мало людей, использующих эту команду. В чем здесь проблема?

1 Ответ

0 голосов
/ 05 января 2019

Добавление SHELL ["powershell"] исправило проблему.

FROM microsoft/dotnet-framework:4.7.2-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY TestWebAPI/*.csproj ./TestWebAPI/
COPY TestWebAPI/*.config ./TestWebAPI/
RUN nuget restore

# copy everything else and build app
COPY TestWebAPI/. ./TestWebAPI/
WORKDIR /app/TestWebAPI
RUN msbuild /p:Configuration=Release


FROM microsoft/iis:10.0.14393.206

SHELL ["powershell"]

COPY --from=build /app/TestWebAPI/. ./
RUN Remove-Website -Name 'Default Web Site'
RUN New-Website -Name 'TestWebApi' -Port 80 \
    -PhysicalPath 'c:\appp\TestWebAPI\' -ApplicationPool '.NET v4.5'
EXPOSE 80

CMD Write-Host IIS Started... ; \
    while ($true) { Start-Sleep -Seconds 3600 }
...