...
1# Copyright 2020 The Kubernetes Authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15ARG BASEIMAGE
16ARG REGISTRY
17ARG OS_VERSION
18
19# We're using a Linux image to unpack the archives, then we're copying them over to Windows.
20FROM --platform=linux/amd64 alpine:3.6 as prep
21
22ADD https://github.com/coredns/coredns/releases/download/v1.5.0/coredns_1.5.0_windows_amd64.tgz /coredns.tgz
23ADD https://iperf.fr/download/windows/iperf-2.0.9-win64.zip /iperf.zip
24ADD https://download.savannah.nongnu.org/releases/coreutils/windows-64bit-unsupported/coreutils-8.31-28-windows-64bit.zip /coreutils.zip
25
26# we're also creating an empty /uploads folder, which we're copying over to Windows because
27# we can't RUN commands on a Windows image.
28RUN tar -xzvf /coredns.tgz &&\
29 unzip iperf.zip &&\
30 mv iperf-2.0.9-win64 iperf &&\
31 unzip coreutils.zip &&\
32 mv coreutils-8.31-28-windows-64bit wincoreutils &&\
33 mkdir /uploads
34
35FROM --platform=linux/amd64 $REGISTRY/windows-servercore-cache:1.0-linux-amd64-$OS_VERSION as servercore-helper
36FROM $BASEIMAGE
37
38# from dnsutils image
39# install necessary packages:
40# - bind-tools: contains dig, which can used in DNS tests.
41# - CoreDNS: used in some DNS tests.
42# from hostexec image
43# installed necessary packages:
44# - curl, nc: used by a lot of e2e tests (inherited from BASEIMAGE)
45# from iperf image
46# install necessary packages: iperf
47COPY --from=servercore-helper /Windows/System32/netapi32.dll /Windows/System32/netapi32.dll
48COPY --from=prep /coredns.exe /coredns.exe
49COPY --from=prep /iperf /iperf
50COPY --from=prep /wincoreutils/sync.exe /bin/sync.exe
51
52# NOTE(claudiub): docker buildx sets the PATH env variable to a Linux-like PATH, which is not desirable.
53ENV PATH="C:\dig\;C:\bin\;C:\curl\;C:\Windows\system32;C:\Windows;C:\Program Files\PowerShell;"
54
55# PORT 80 needed by: test-webserver
56# PORT 8080 needed by: netexec, nettest
57# PORT 8081 needed by: netexec
58# PORT 9376 needed by: serve-hostname
59EXPOSE 80 8080 8081 9376
60
61# from netexec
62COPY --from=prep /uploads /uploads
63
64# from porter
65ADD porter/localhost.crt localhost.crt
66ADD porter/localhost.key localhost.key
67
68# from mounttest
69ADD mounttest/filePermissions.ps1 filePermissions.ps1
70
71ADD agnhost /agnhost
72
73# needed for the entrypoint-tester related tests. Some of the entrypoint-tester related tests
74# overrides this image's entrypoint with agnhost-2 binary, and will verify that the correct
75# entrypoint is used by the containers.
76ADD agnhost /agnhost-2
77
78ENTRYPOINT ["/agnhost"]
79CMD ["pause"]
View as plain text