Публикация сайта ASP.Net на Docker с использованием MsDeploy - PullRequest
0 голосов
/ 19 сентября 2018

Мы используем MsDeploy для развертывания нашего сайта на IIS.Когда мы публикуем, мы получаем три файла, а именно.

  • MySite.deploy.cmd ,
  • MySite.SetParameters.xml
  • MySite.zip.

И мы запускаем команду вроде;

MySite.cmd / Y / M: https://IpOfMachine/MsDeploy.axd

для развертывания на сервере.

Теперь мы хотим переместить его в Docker,с файлом Docker что-то вроде этого -

ОТ microsoft / iis

RUN powershell -NoProfile -Command Remove-Item -Recurse C: \ inetpub \ wwwroot *

WORKDIR C: / DeploymentFiles

COPY DeploymentPackage /.

RUN cmd MySite.cmd / Y / M: https://IpOfDockerInstance/MsDeploy.axd

Но MsDeploy не работаети дает ошибку 404.Я думаю, что мне нужно добавить WebDepoly , чтобы это работало, но как это сделать в Docker?Любые предложения, пожалуйста.Я новичок в Docker

1 Ответ

0 голосов
/ 24 сентября 2018

Может быть трудно начать работу с докером, если вы не разбираетесь в основах.Я потратил некоторое время, чтобы прочитать больше об этом и, наконец, придумал следующий файл Docker, который работал для меня.Я устал документировать сценарий в строке с несколькими ссылками, которые мне помогли.

FROM microsoft/iis

#Keep the artifacts related for image in the same folder from where docker is running

RUN cmd mkdir C:/DeploymentFiles
WORKDIR C:/DeploymentFiles

# Copy and install msdeploy service
COPY WebDeploy_amd64_en-US.msi .
RUN msiexec /i WebDeploy_amd64_en-US.msi AGREETOLICENSE=yes ADDLOCAL=ALL /qn
RUN powershell Start-service MsDepSvc;

#Remove default iis site's contents
RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*


# Resolving 403 issue. Ref - https://github.com/microsoft/iis-docker/issues/5

#Adding a user so i can connect trough IIS Manager
RUN NET USER testing "Password01!" /ADD
RUN NET LOCALGROUP "Administrators" "testing" /add

#Grant Permissions
RUN icacls "C:\inetpub\wwwroot\*" /grant everyone:(OI)(CI)F /T

#Install neccassary features
RUN powershell Install-WindowsFeature Web-Mgmt-Service
RUN powershell Install-WindowsFeature Web-Windows-Auth
RUN powershell Install-WindowsFeature NET-Framework-45-ASPNET
RUN powershell Install-WindowsFeature Web-Asp-Net45
RUN powershell Install-WindowsFeature NET-WCF-HTTP-Activation45

#Start Service and make it autorun
RUN net start wmsvc
RUN sc config WMSVC start= auto
RUN powershell -NoProfile -Command \

Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name EnableRemoteManagement -Value 1

# Copy deployment packages and related files to container to "C:/DeploymentFiles"
COPY DeployPackage/ .
# The Deploy_App.bat file contains the command to deploy using msdeploy
COPY Deploy_App.bat .

RUN C:/DeploymentFiles/Deploy_App.bat

# Resolve the ACL issues during deployment. Ref - https://fluentbytes.com/how-to-fix-error-this-access-control-list-is-not-in-canonical-form-and-therefore-cannot-be-modified-error-count-1/
COPY aclFix.ps1 .
RUN powershell.exe -executionpolicy bypass .\aclFix.ps1

RUN C:/DeploymentFiles/Deploy_App.bat

EXPOSE 80
...