-
Notifications
You must be signed in to change notification settings - Fork 60
/
Copy pathDockerfile
77 lines (55 loc) · 2.51 KB
/
Dockerfile
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
# Default arguments
ARG gitWindowsComponent='https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/MinGit-2.47.1-64-bit.zip'
ARG jdkServerWindowsComponent='https://corretto.aws/downloads/resources/21.0.6.7.1/amazon-corretto-21.0.6.7.1-windows-x64-jdk.zip'
ARG powershellImage='mcr.microsoft.com/powershell:nanoserver-1803'
ARG windowsBuild='1803'
# The list of required arguments
# ARG powershellImage
# ARG jdkServerWindowsComponent
# ARG gitWindowsComponent
# ARG windowsBuild
# ARG powershellImage
# ARG jdkServerWindowsComponent
# PowerShell
FROM ${powershellImage} AS base
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# JDK
ARG jdkServerWindowsComponent
RUN [Net.ServicePointManager]::SecurityProtocol = 'tls12, tls11, tls' ; \
Invoke-WebRequest $Env:jdkServerWindowsComponent -OutFile jdk.zip; \
Expand-Archive jdk.zip -DestinationPath $Env:ProgramFiles\Java ; \
Get-ChildItem $Env:ProgramFiles\Java | Rename-Item -NewName "OpenJDK" ; \
Remove-Item -Force jdk.zip ; \
Remove-Item $Env:ProgramFiles\Java\OpenJDK\lib\src.zip -Force
# Git
ARG gitWindowsComponent
RUN [Net.ServicePointManager]::SecurityProtocol = 'tls12, tls11, tls' ; \
Invoke-WebRequest $Env:gitWindowsComponent -OutFile git.zip; \
Expand-Archive git.zip -DestinationPath $Env:ProgramFiles\Git ; \
Remove-Item -Force git.zip
# Prepare TeamCity server distribution
ARG windowsBuild
COPY TeamCity /TeamCity
RUN New-Item C:/TeamCity/webapps/ROOT/WEB-INF/DistributionType.txt -type file -force -value "docker-windows-$Env:windowsBuild" | Out-Null
COPY run-server.ps1 /TeamCity/run-server.ps1
ARG powershellImage
FROM ${powershellImage}
COPY --from=base ["C:/Program Files/Java/OpenJDK", "C:/Program Files/Java/OpenJDK"]
COPY --from=base ["C:/Program Files/Git", "C:/Program Files/Git"]
ENV JAVA_HOME="C:\Program Files\Java\OpenJDK" \
TEAMCITY_DIST="C:\TeamCity" \
TEAMCITY_ENV=container \
CATALINA_TMPDIR="C:\TeamCity\temp" \
TEAMCITY_LOGS="C:\TeamCity\logs" \
TEAMCITY_DATA_PATH="C:\ProgramData\JetBrains\TeamCity" \
TEAMCITY_SERVER_MEM_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=640m"
EXPOSE 8111
COPY --from=base $TEAMCITY_DIST $TEAMCITY_DIST
VOLUME $TEAMCITY_DATA_PATH \
$TEAMCITY_LOGS \
$CATALINA_TMPDIR
CMD ["pwsh", "C:/TeamCity/run-server.ps1"]
# In order to set system PATH, ContainerAdministrator must be used
USER ContainerAdministrator
RUN setx /M PATH "%PATH%;%JAVA_HOME%\bin;C:\Program Files\Git\cmd"
USER ContainerUser