Почему docker в IIS выдает ошибку http 403 после изменения исходного кода? - PullRequest
1 голос
/ 26 февраля 2020

Я могу успешно создать и запустить демо-класс c asp сайт (здесь: https://www.docker.com/blog/get-apps-off-windows-2003-cloud-docker-enterprise/) (исходный код здесь: https://github.com/sixeyed/presentations/tree/master/docker-webinars/from-w2k3-to-cloud) с следующий Dockerfile:

# escape=`
FROM microsoft/iis:windowsservercore-ltsc2016
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

RUN Install-WindowsFeature Web-ASP
COPY ./share/ClassicAspApp.zip .

RUN Expand-Archive -Path ClassicAspApp.zip -DestinationPath C:\ClassicAspApp; `
    Remove-Item ClassicAspApp.zip

RUN Remove-Website -Name 'Default Web Site'; `
    New-Website -Name web-app -Port 80 -PhysicalPath C:\ClassicAspApp

После построения образа (docker сборка образа -t шестигранная / w2k3-classi c - asp -f. \ docker \ classi c -asp \ Dockerfile.) И запуск контейнера (docker запуск контейнера -d sixeyed / w2k3-classi c - asp), а затем просмотр URL-адреса spesifi c (найден: docker просмотр контейнера) Я действительно может заставить сайт classi c asp работать как положено.

Однако всякий раз, когда я распаковываю и изменяю (даже немного) исходный код в демо-файле asp (в общей папке) а затем пересоберите образ и снова запустите контейнер и перейдите к URL, я всегда буду сталкиваться с http 403 - Запрещено: доступ запрещен. У вас нет разрешения на просмотр этого каталога или страницы с использованием предоставленных вами учетных данных.

Я пытался найти решение этой проблемы из многих источников (например, IIS в Docker, возвращая 403 и Dockerize ASP Classi c на IIS ), но пока безуспешно.

Может кто-нибудь понять, почему я всегда сталкиваюсь с http 403, когда меняю тест asp - файл в исходном коде? Итак, что нужно сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 28 февраля 2020

Я думаю, что нашел решение самостоятельно - хотя я действительно еще не знаю, почему изменение исходного кода демонстрационного проекта фактически привело к ошибке 403. Однако, изучая проблему, я создал новый простой проект classi c asp в другом каталоге и адаптировал Dockerfile к этим изменениям пути следующим образом:

# escape=`
FROM microsoft/iis:windowsservercore-ltsc2016
SHELL ["powershell", "-Command"]
RUN Install-WindowsFeature Web-ASP
RUN mkdir C:\testAsp
COPY ./code/asp/ C:\testAsp
RUN Remove-Website -Name 'Default Web Site'; `
    New-Website -Name web-app -Port 8000 -PhysicalPath C:\testAsp

И после этого я все еще получил http -403 ошибка. Затем я нашел следующий ответ: 403 - Запрещено: доступ запрещен. У вас нет разрешения на просмотр этого каталога или страницы с использованием учетных данных, которые вы указали , и внезапно обнаружил, что, поскольку мой файл asp -test не назван по умолчанию. asp -файл сервер не находит его , Итак, моя ошибка произошла из-за довольно наивной и простой причины - по крайней мере, во втором демо.

Но asp -файл в первом демонстрационном проекте действительно имел тип по умолчанию (по умолчанию. asp), и поэтому я не могу точно понять, почему любые изменения в нем превратят его в http-403. ошибка. Может быть, это как-то связано с разархивированием и архивированием между ними, и сервер больше не может найти повторно распакованную папку с asp -файлом в ней. classi c asp сайт работает!

...