Как отладить проблемы в образе докера, когда нет ошибки - PullRequest
0 голосов
/ 06 января 2019

Я создаю приложение веб-API ASP.NET, работающее на .net Framework 4.5. Вот мой файл докера:

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"]

WORKDIR /inetpub/wwwroot
COPY --from=build /app/TestWebAPI/. ./

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

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

Затем я запускаю следующие команды:

 docker image build --tag v7 --file .\Dockerfile .
 docker container run --detach --publish 80 v7
docker ps to get the port number

Когда я захожу на определенный порт, сайт не загружается. Не было ошибки при сборке контейнеров. Как я могу найти проблему (очевидно, это мой файл докера)

1 Ответ

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

Команда, которая выполняется при запуске контейнера:

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

Это, очевидно, не запускает веб-сайт, поскольку шаги, выполняемые с помощью команды RUN, выполняются только во время сборки образа.

Полагаю, вы также хотели выполнить два шага, выполняемых на этапе сборки контейнера, с помощью команды RUN. Это может быть достигнуто либо путем их цепочки в шаге CMD Dockerfile, либо путем создания небольшого сценария, оборачивающего эти команды и выполняющего его.

...