Olá Pessoal,
Neste post irei mostrar como criar IIS Server rodando dentro de um Windows Container, tudo isso usando docker e powershell.
Primeiro, se você ainda não instalou o docker no seu windows server, assista esse vídeo, para instalar windows server 2016 ou esse para instalar no windows server 2019
Segundo, segue abaixo o dockerfile utilizado com o passo-a-passo, para criacao da nossa imagem.
Neste exemplo nos iremos utilizar o windows server 2019
# Windows Server Core 2019
FROM mcr.microsoft.com/windows/servercore:ltsc2019
LABEL maintainer "Leandro Scardua"
# configurando o dockerfile para rodar os comandos usando powershell com paramentros abaixo. / Run powershell with special configuration
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# Instalar o IIS e baixar a ultima versao do Service Monitor / Install IIS and download the latest version of Service Monitor
RUN Add-WindowsFeature Web-Server ; \
$dl = ($body1 = (Invoke-WebRequest -UseBasicParsing -Uri "https://api.github.com/repos/microsoft/IIS.ServiceMonitor/releases/latest" | ConvertFrom-json)[0].body -split '### Download URL') ; \
Invoke-WebRequest -Uri $dl.GetValue(1) -UseBasicParsing -OutFile "C:\ServiceMonitor.exe"
# Abrir somente a porta 80 para acesso externo ; expose port 80 to external access
EXPOSE 80
# Usando service monitor para verificar a saude do container / Use the service monitor to verify the container`s healthy
ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]
Agora com o docker instalado, e que já vimos a estrutura do nosso dockerfile.
O próximo passo será executar os comandos abaixo, para baixar o dockerfile supracitado e salvar no caminho “C:\ws\iis” .
Você pode alterar o caminho do script se necessário.
Invoke-WebRequest https://raw.githubusercontent.com/leandroscardua/Windows-Container/master/dockerfile/IIS/dockerfile-IIS-ltsc2019.yml -UseBasicParsing -OutFile (New-Item -Path “C:\ws\iis\dockerfile” -Force)
cd C:\ws\iis
Após a execução do script anterior, nos podemos executar o comando abaixo para criar a imagem, usando a tag local:iis
docker build -t local:iis .
Segue o output do comando:
PS C:\ws\iis> docker build -t local:iis .
Sending build context to Docker daemon 2.56kB
Step 1/5 : FROM mcr.microsoft.com/windows/servercore:ltsc2019
—> 987b1d5e0abf
Step 2/5 : SHELL [“powershell”, “-Command”, “$ErrorActionPreference = ‘Stop’; $ProgressPreference = ‘SilentlyContinue’;”]
—> Running in 0b8f1f2ded0f
Removing intermediate container 0b8f1f2ded0f
—> bac0e9228208
Step 3/5 : RUN Add-WindowsFeature Web-Server ; $dl = ($body1 = (Invoke-WebRequest -UseBasicParsing -Uri “https://api.github.com/repos/microsoft/IIS.ServiceMonitor/releases/latest” | ConvertFrom-json)[0].body -split ‘### Download URL’) ; Invoke-WebRequest -Uri $dl.GetValue(1) -UseBasicParsing -OutFile “C:\ServiceMonitor.exe”
—> Running in 9eb1a66fd763
Success Restart Needed Exit Code Feature Result
——- ————– ——— ————–
True No Success {Common HTTP Features, Default Documen…
Removing intermediate container 9eb1a66fd763
—> cd377ab19122
Step 4/5 : EXPOSE 80
—> Running in fa908ffc3041
Removing intermediate container fa908ffc3041
—> 98d271c535df
Step 5/5 : ENTRYPOINT [“C:\\ServiceMonitor.exe”, “w3svc”]
—> Running in 6f135f078b3c
Removing intermediate container 6f135f078b3c
—> aee9391baf57
Successfully built aee9391baf57
Successfully tagged local:iis
PS C:\ws\iis>
Valeu pessoal, até a próxima.