We cannot have any RUN commands in the Windows stage when using docker buildx, which is why we were using the busybox-helper image. The purpose of the image was to contain a few things that we would obtain by running a few commands: - symlinks for the busybox binary - run vcredist_x64.exe which would also give us the vcruntime140.dll which is necessary for dig or httpd. There are alternatives to the commands above that can be achieved in a Linux stage as well: - we can create the symlinks in a Linux stage with ln -s. Copying them over to Windows will allow them to work just as well as if they were being copied over from a Windows image. The 'Files\' prefix issue to the symlink target still persists. - we can download the vcruntime140.dll directly, allowing us to skip the vcredist_x64.exe installation.
76 lines
2.7 KiB
Plaintext
76 lines
2.7 KiB
Plaintext
# Copyright 2020 The Kubernetes Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
ARG BASEIMAGE
|
|
ARG REGISTRY
|
|
ARG OS_VERSION
|
|
|
|
# We're using a Linux image to unpack the archives, then we're copying them over to Windows.
|
|
FROM --platform=linux/amd64 alpine:3.6 as prep
|
|
|
|
ADD https://github.com/coredns/coredns/releases/download/v1.5.0/coredns_1.5.0_windows_amd64.tgz /coredns.tgz
|
|
ADD https://iperf.fr/download/windows/iperf-2.0.9-win64.zip /iperf.zip
|
|
|
|
# we're also creating an empty /uploads folder, which we're copying over to Windows because
|
|
# we can't RUN commands on a Windows image.
|
|
RUN tar -xzvf /coredns.tgz &&\
|
|
unzip iperf.zip &&\
|
|
mv iperf-2.0.9-win64 iperf &&\
|
|
mkdir /uploads
|
|
|
|
FROM --platform=linux/amd64 $REGISTRY/windows-servercore-cache:1.0-linux-amd64-$OS_VERSION as servercore-helper
|
|
FROM $BASEIMAGE
|
|
|
|
# from dnsutils image
|
|
# install necessary packages:
|
|
# - bind-tools: contains dig, which can used in DNS tests.
|
|
# - CoreDNS: used in some DNS tests.
|
|
# from hostexec image
|
|
# installed necessary packages:
|
|
# - curl, nc: used by a lot of e2e tests (inherited from BASEIMAGE)
|
|
# from iperf image
|
|
# install necessary packages: iperf
|
|
COPY --from=servercore-helper /Windows/System32/netapi32.dll /Windows/System32/netapi32.dll
|
|
COPY --from=prep /coredns.exe /coredns.exe
|
|
COPY --from=prep /iperf /iperf
|
|
|
|
# NOTE(claudiub): docker buildx sets the PATH env variable to a Linux-like PATH, which is not desirable.
|
|
ENV PATH="C:\dig\;C:\bin\;C:\curl\;C:\Windows\system32;C:\Windows;C:\Program Files\PowerShell;"
|
|
|
|
# PORT 80 needed by: test-webserver
|
|
# PORT 8080 needed by: netexec, nettest
|
|
# PORT 8081 needed by: netexec
|
|
# PORT 9376 needed by: serve-hostname
|
|
EXPOSE 80 8080 8081 9376
|
|
|
|
# from netexec
|
|
COPY --from=prep /uploads /uploads
|
|
|
|
# from porter
|
|
ADD porter/localhost.crt localhost.crt
|
|
ADD porter/localhost.key localhost.key
|
|
|
|
# from mounttest
|
|
ADD mounttest/filePermissions.ps1 filePermissions.ps1
|
|
|
|
ADD agnhost /agnhost
|
|
|
|
# needed for the entrypoint-tester related tests. Some of the entrypoint-tester related tests
|
|
# overrides this image's entrypoint with agnhost-2 binary, and will verify that the correct
|
|
# entrypoint is used by the containers.
|
|
ADD agnhost /agnhost-2
|
|
|
|
ENTRYPOINT ["/agnhost"]
|
|
CMD ["pause"]
|