Use multi-stage build on Windows

pull/2/head
Stefan Scherer 7 years ago
parent c50d441484
commit 4c6ee33df4
No known key found for this signature in database
GPG Key ID: 5966AEAC37E957FA

@ -1,7 +0,0 @@
FROM microsoft/nanoserver
COPY tmp /
ENV PORT 8000
EXPOSE 8000
CMD ["\\http.exe"]

@ -1,6 +0,0 @@
FROM golang:nanoserver
COPY . /code
WORKDIR /code
RUN go build http.go

@ -0,0 +1,14 @@
FROM golang:nanoserver
COPY . /code
WORKDIR /code
RUN go build http.go
FROM microsoft/nanoserver
COPY --from=0 /code/http.exe /http.exe
EXPOSE 8080
CMD ["\\http.exe"]

@ -4,9 +4,6 @@ environment:
secure: LjNiW/ZWrfVIJn3Mc9foeg==
DOCKER_PASS:
secure: 4gsl5WiqIztEWhL5fuhp9X0qT/mKg9fYzKYUUPf5WStIuNddv0fvIKGmvvyuFzzd
install:
- choco install -y docker -pre
- docker version
build_script:
- ps: .\build.ps1

@ -3,22 +3,16 @@ $files = ""
Write-Host Starting build
Write-Host Updating base images
docker pull microsoft/windowsservercore
docker pull microsoft/nanoserver
Write-Host Removing old images
$ErrorActionPreference = 'SilentlyContinue';
docker rmi $(docker images --no-trunc --format '{{.Repository}}:{{.Tag}}' | sls -notmatch -pattern '(REPOSITORY|microsoft\/(windowsservercore|nanoserver))')
$ErrorActionPreference = 'Stop';
Write-Host Prune system
docker system prune -f
Write-Host Updating Docker engine to master
Stop-Service docker
$wc = New-Object net.webclient
$wc.Downloadfile("https://master.dockerproject.org/windows/amd64/dockerd.exe", "$env:ProgramFiles\docker\dockerd.exe")
$wc.Downloadfile("https://master.dockerproject.org/windows/amd64/docker.exe", "$env:ProgramFiles\docker\docker.exe")
Start-Service docker
docker version
docker build -t httpbuild -f Dockerfile.build .
docker create --name httpbuild httpbuild
if (!(Test-Path tmp)) {
mkdir tmp
}
docker cp httpbuild:/code/http.exe tmp
docker build -t whoami .
docker build -t whoami -f Dockerfile.windows .
docker images

@ -6,11 +6,10 @@ docker rm -f whoamitest
$ErrorActionPreference = 'Stop';
Write-Host Starting container
docker run --name whoamitest -p 8000:8000 -d whoami
$ip=$(docker inspect -f '{{ .NetworkSettings.Networks.nat.IPAddress }}' whoamitest)
docker run --name whoamitest -p 8080:8080 -d whoami
Start-Sleep 15
Write-Host Testing from another container
docker run --rm microsoft/nanoserver powershell -command invoke-webrequest -usebasicparsing http://$($ip):8000
docker run --rm microsoft/nanoserver powershell -command invoke-webrequest -usebasicparsing http://whoamitest:8080
$ErrorActionPreference = 'SilentlyContinue';
docker kill whoamitest

Loading…
Cancel
Save