File: Dockerfile

package info (click to toggle)
tensorflow 2.14.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 359,396 kB
  • sloc: cpp: 2,418,453; python: 736,954; java: 20,254; ansic: 18,962; sh: 9,279; pascal: 7,941; objc: 1,584; xml: 988; ada: 727; cs: 273; perl: 150; makefile: 92
file content (256 lines) | stat: -rw-r--r-- 13,956 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019

# Set default powershell policy for this script (ProgressPreference='SilentlyContinue' makes
# downloads with Invoke-WebRequest not show the progress bar and is MUCH faster).
SHELL ["powershell.exe", "-ExecutionPolicy", "Bypass", "-Command", "$ErrorActionPreference='Stop'; $ProgressPreference='SilentlyContinue'; $VerbosePreference = 'Continue';"]

# Workaround for networking (b/112379377) was closed as won't fix for MTU setting.
# Remaining lines handle making the metadata server on the VM accessible inside docker.
RUN Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object { \
        & netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent }; \
    $gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq \"0.0.0.0/0\" } | Sort-Object RouteMetric \
        | Select NextHop).NextHop; \
    $ifIndex = (Get-NetAdapter -InterfaceDescription \"Hyper-V Virtual Ethernet*\" | Sort-Object \
        | Select ifIndex).ifIndex; \
    New-NetRoute -DestinationPrefix 169.254.169.254/32 -InterfaceIndex $ifIndex -NextHop $gateway

# Enable Long Paths for Win32 File/Folder APIs.
RUN New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem \
        -Name LongPathsEnabled -Value 1 -PropertyType DWORD -Force

# Install Visual C++ Redistributable for Visual Studio 2015-2022.
RUN New-Item -Path "C:/" -Name "TEMP" -ItemType "directory"; \
    Invoke-WebRequest "https://aka.ms/vs/17/release/vc_redist.x64.exe" \
        -OutFile C:/TEMP/vc_redist.x64.exe -UseBasicParsing; \
    Start-Process -filepath C:/TEMP/vc_redist.x64.exe -ArgumentList '/install', '/passive', '/norestart' -Wait; \
    Remove-Item C:/TEMP/vc_redist.x64.exe

# Install Visual Studio 2022 Build Tools. Install ManagedDesktopBuildTools separately to ensure all Optional workloads are installed too.
RUN Invoke-WebRequest "https://aka.ms/vs/17/release/vs_buildtools.exe" \
        -OutFile C:/TEMP/vs_buildtools.exe -UseBasicParsing; \
    Start-Process -FilePath C:/TEMP/vs_buildtools.exe -ArgumentList "--installPath", "C:/VS", \
        "--quiet", "--wait", "--nocache", \
        "--add", "Microsoft.VisualStudio.Workload.VCTools", \
        "--add", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", \
        "--add", "Microsoft.VisualStudio.Component.Windows10SDK.19041" -Wait; \
    Start-Process -FilePath C:/TEMP/vs_buildtools.exe -ArgumentList "--installPath", "C:/VS", \
        "--quiet", "--wait", "--nocache", "--includeOptional", \
        "--add", "Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools" -Wait; \
    Remove-Item C:/TEMP/vs_buildtools.exe; \
    [Environment]::SetEnvironmentVariable(\"BAZEL_VC\", \"C:\VS\VC\", \"Machine\"); \
    $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";C:\VS\VC\Tools\MSVC\14.33.31629\bin\Hostx64\x64;C:\VS\Common7\Tools;C:\VS\MSBuild\Current\Bin\", \"Machine\");

# Add signtool.exe to the PATH. Note this path may need to be edited if updates
# are made to the Windows 10 SDK.
RUN $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";C:\Program Files (x86)\Windows Kits\10\App Certification Kit\", \"Machine\");

# Install WiX toolset (v4) - Necessary for MSI Installer/Signing builds
RUN dotnet tool install --global wix

# Install msys2, packages and add to path.
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
    Invoke-WebRequest "https://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20220319.sfx.exe" \
        -OutFile msys2_install.exe -UseBasicParsing; \
    .\msys2_install.exe -y -oC:\; \
    Remove-Item msys2_install.exe; \
    function msys() { C:\msys64\usr\bin\bash.exe @('-lc') + @Args; } \
    msys ' '; \
    msys 'pacman --noconfirm -Syy bsdcpio bsdtar bzip2'; \
    msys 'pacman --noconfirm -Syy coreutils curl dash file filesystem findutils'; \
    msys 'pacman --noconfirm -Syy flex gawk gcc-libs grep gzip inetutils info'; \
    msys 'pacman --noconfirm -Syy less lndir mintty ncurses pactoys-git patch'; \
    msys 'pacman --noconfirm -Syy pax-git pkgfile rebase sed tar tftp-hpa time tzcode util-linux which'; \
    $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";C:\msys64;C:\msys64\usr\bin\", \"Machine\");

# Install Go 1.19.1
RUN Invoke-WebRequest "https://go.dev/dl/go1.19.1.windows-amd64.msi" \
        -OutFile C:/TEMP/go_install.msi -UseBasicParsing; \
    Start-Process C:/TEMP/go_install.msi -ArgumentList "/quiet", "/log", "C:/TEMP/go_install_log.txt", \
        "InstallAllUsers=1", "PrependPath=1" -wait; \
    Remove-Item C:/TEMP/go_install.msi; \
    Remove-Item C:/TEMP/go_install_log.txt

# Install Python 3.
RUN Invoke-WebRequest "https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe" \
        -OutFile C:/TEMP/python_install.exe -UseBasicParsing; \
    Start-Process C:/TEMP/python_install.exe -ArgumentList "/quiet", "/log", "C:/TEMP/python_install_log.txt", \
        "InstallAllUsers=1", "PrependPath=1" -wait; \
    Remove-Item C:/TEMP/python_install.exe; \
    Remove-Item C:/TEMP/python_install_log.txt

# Install JDK 17
RUN Add-Type -AssemblyName "System.IO.Compression.FileSystem"; \
    $zulu_url = \"https://cdn.azul.com/zulu/bin/zulu17.32.13-ca-jdk17.0.2-win_x64.zip\"; \
    $zulu_zip = \"c:/temp/jdk_install.zip\"; \
    $zulu_extracted_path = \"c:/temp/\" + [IO.Path]::GetFileNameWithoutExtension($zulu_url); \
    $zulu_root = \"c:/openjdk\"; \
    (New-Object Net.WebClient).DownloadFile($zulu_url, $zulu_zip); \
    [System.IO.Compression.ZipFile]::ExtractToDirectory($zulu_zip, \"c:/temp\"); \
    Move-Item $zulu_extracted_path -Destination $zulu_root; \
    Remove-Item $zulu_zip; \
    $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";${zulu_root}\bin\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"JAVA_HOME\", $zulu_root, \"Machine\")

# Install gcloud (install.bat installs directly into bin folder of extracted zip contents)
# Install needed gcloud components
RUN Add-Type -AssemblyName "System.IO.Compression.FileSystem"; \
    $pkg_url = \"https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-396.0.0-windows-x86_64.zip\"; \
    $pkg_zip = \"c:/temp/gcloud.zip\"; \
    $pkg_extracted_path = \"c:/google-cloud-sdk\"; \
    (New-Object Net.WebClient).DownloadFile($pkg_url, $pkg_zip); \
    [System.IO.Compression.ZipFile]::ExtractToDirectory($pkg_zip, \"c:/\"); \
    Start-Process cmd.exe -ArgumentList "/c", "/s", "$pkg_extracted_path/install.bat", "-q" -wait; \
    Remove-Item $pkg_zip; \
    $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";${pkg_extracted_path}\bin\", \"Machine\"); \
    $env:PATH = [Environment]::GetEnvironmentVariable('PATH', 'Machine'); \
    gcloud components install docker-credential-gcr kubectl gsutil;

# Install cygwin and packages
# Running a seperate ps1 file since when running inside a Dockerfile, it does
# not work.
COPY install/install_cygwin.ps1 c:/
RUN c:/install_cygwin.ps1; \
    $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";C:\Cygwin64\bin\", \"Machine\");
RUN Remove-Item c:/install_cygwin.ps1

# Install Chocolatey and packages
RUN Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); \
    $env:PATH = [Environment]::GetEnvironmentVariable('PATH', 'Machine'); \
    choco feature enable -n allowGlobalConfirmation; \
    choco install 7zip; \
    choco install 7zip.install; \
    choco install 7zip.portable; \
    choco install anaconda2 --version 5.0.1; \
    choco install anaconda3 --version 5.0.1; \
    choco install android-sdk --version 25.2.3.1; \
    choco install AndroidStudio --version 3.0.1.0; \
    choco install ant --version 1.10.1; \
    choco install ccleaner; \
    choco install chocolatey; \
    choco install chocolatey-core.extension; \
    choco install chocolatey-visualstudio.extension; \
    choco install chocolatey-windowsupdate.extension; \
    choco install cmake.install; \
    choco install dotnetcore-sdk; \
    choco install git; \
    choco install git.install; \
    choco install GoogleChrome; \
    choco install gradle --version 4.4.1; \
    choco install jdk8; \
    choco install KB2533623; \
    choco install KB2919355; \
    choco install KB2919442; \
    choco install KB2999226; \
    choco install KB3033929; \
    choco install KB3035131; \
    choco install maven; \
    choco install ninja; \
    choco install nodejs --version 9.3.0; \
    choco install nodejs.install --version 9.3.0; \
    choco install nuget.commandline; \
    choco install openjdk11; \
    choco install peazip; \
    choco install peazip.install; \
    choco install peazip.portable; \
    choco install php --version 7.2.0; \
    choco install protoc --version 3.2.0; \
    choco install ruby --version 2.5.0.1; \
    choco install swig --version 3.0.9; \
    choco install sysinternals; \
    choco install unrar; \
    choco install unzip; \
    choco install vcredist140; \
    choco install vcredist2015; \
    choco install vim; \
    choco install winrar; \
    choco install zip; \
    choco install Firefox; \
    choco install iisexpress;

RUN cmd /c 'mklink /J c:\Anaconda c:\tools\anaconda2';
RUN cmd /c 'mklink c:\programdata\chocolatey\bin\rar.exe \"c:\program files\winrar\rar.exe\"';

# Installing pip packages
RUN pip install --upgrade setuptools; \
    pip install altgraph appdirs cachetools certifi cffi chardet colorama \
    cryptography cycler Cython decorator google-api-python-client \
    google-auth google-auth-httplib2 grpcio httplib2 idna ipython-genutils \
    kiwisolver macholib matplotlib nose numpy packaging pandas pickleshare pip \
    prompt-toolkit protobuf psutil pyasn1 pyasn1-modules pycparser Pygments \
    pyparsing pyreadline python-dateutil pytz pywin32 requests rsa setuptools \
    simplegeneric six Tempita traitlets uritemplate urllib3 virtualenv wcwidth \
    wheel win-unicode-console;

# Hardcoding Android license since I did not find any solution on accepting it
# through the docker build command. If the licensing agreement changes, this 
# will need to be updated as well.
RUN New-Item -ItemType Directory -Path C:\Android\android-sdk\licenses; \
    Set-Content -Path .\Android\android-sdk\licenses\android-sdk-license -Value "`n24333f8a63b6825ea9c5514f83c2829b004d1fee" -NoNewLine;

# Add sdkmanager to PATH
RUN $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";C:\Android\android-sdk\tools\bin\", \"Machine\");

# Install android packages
RUN $env:PATH = [Environment]::GetEnvironmentVariable('PATH', 'Machine'); \
    New-Item C:\Users\ContainerAdministrator\.android\repositories.cfg; \
    sdkmanager 'ndk-bundle'; \
    sdkmanager 'platforms;android-33'; \
    sdkmanager 'add-ons;addon-google_apis-google-24'; \
    sdkmanager 'cmake;3.10.2.4988404'; \
    sdkmanager 'cmake;3.18.1'; \
    sdkmanager 'cmake;3.22.1'; \
    sdkmanager 'cmake;3.6.4111459'; \
    sdkmanager 'emulator'; \
    sdkmanager 'system-images;android-27;google_apis;x86'; \
    sdkmanager 'sources;android-27'; \
    sdkmanager 'extras;google;Android_Emulator_Hypervisor_Driver'; \
    sdkmanager 'extras;google;auto'; \
    sdkmanager 'extras;google;google_play_services'; \
    sdkmanager 'extras;google;instantapps'; \
    sdkmanager 'extras;google;m2repository'; \
    sdkmanager 'extras;google;market_apk_expansion'; \
    sdkmanager 'extras;google;market_licensing'; \
    sdkmanager 'extras;google;simulators'; \
    sdkmanager 'extras;google;usb_driver'; \
    sdkmanager 'extras;google;webdriver'; \
    sdkmanager 'extras;android;m2repository'; \
    sdkmanager 'extras;intel;Hardware_Accelerated_Execution_Manager'; \
    sdkmanager 'extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0'; \
    sdkmanager 'extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2'; \
    sdkmanager 'patcher;v4'; \
    sdkmanager 'ndk;25.1.8937393'; \
    sdkmanager 'build-tools;27.0.3';

# Install Scoop and packages
RUN iex \"& {$(irm get.scoop.sh)} -RunAsAdmin\"; \
    scoop install perl; \
    scoop install bazel; \
    scoop install cuda; \
    scoop install azure-functions-core-tools; \
    scoop install azure-cli;

# Setting environment variables
RUN [Environment]::SetEnvironmentVariable('CYGWIN', 'winsymlinks:native', 'Machine'); \
    [Environment]::SetEnvironmentVariable('HOME', 'C:\Users\ContainerAdministrator\', 'Machine'); \
    [Environment]::SetEnvironmentVariable('HOMEDRIVE', 'C:', 'Machine'); \
    [Environment]::SetEnvironmentVariable('HOMEPATH', '\Users\ContainerAdministrator\', 'Machine'); \
    [Environment]::SetEnvironmentVariable('GOROOT', 'C:\Program Files\Go\', 'Machine'); \
    [Environment]::SetEnvironmentVariable('KOKORO_POSIX_ROOT', '/tmpfs', 'Machine'); \
    [Environment]::SetEnvironmentVariable('KOKORO_ROOT', 'T:\', 'Machine'); \
    [Environment]::SetEnvironmentVariable('SHELL', '/bin/bash', 'Machine'); \
    $old_path = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\"); \
    [Environment]::SetEnvironmentVariable(\"PATH\", $old_path + \";C:\Program Files\CMake\bin\", \"Machine\");


# Restore default shell for Windows containers.
SHELL ["cmd.exe", "/s", "/c"]

# Default to PowerShell if no other command specified.
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]