-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Dockerfile.windows
117 lines (94 loc) · 5.45 KB
/
Dockerfile.windows
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
# escape=`
# This Dockerfile will only build on Docker for Windows.
#
# If you change dependencies etc here, please also check and update
# the other Windows build resources:
#
# - DEVELOPER_GUIDE.md "Windows" section
# - appveyor.yml
# - .github/workflows/call-build-windows.yaml
# - dockerfiles/Dockerfile.windows
#
ARG WINDOWS_VERSION=ltsc2019
# Builder Image - Windows Server Core
FROM mcr.microsoft.com/windows/servercore:$WINDOWS_VERSION AS builder
RUN setx /M PATH "%PATH%;C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\WinFlexBison;C:\dev\vcpkg"
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
WORKDIR /local
# Install Visual Studio 2019
ADD https://aka.ms/vs/16/release/vs_buildtools.exe /local/vs_buildtools.exe
ADD https://aka.ms/vs/16/release/channel /local/VisualStudio.chman
RUN Start-Process /local/vs_buildtools.exe `
-ArgumentList '--quiet ', '--wait ', '--norestart ', '--nocache', `
'--installPath C:\BuildTools', `
'--channelUri C:\local\VisualStudio.chman', `
'--installChannelUri C:\local\VisualStudio.chman', `
'--add Microsoft.VisualStudio.Workload.VCTools', `
'--includeRecommended' -NoNewWindow -Wait;
ADD https://github.com/lexxmark/winflexbison/releases/download/v2.5.22/win_flex_bison-2.5.22.zip /local/win_flex_bison.zip
RUN Expand-Archive /local/win_flex_bison.zip -Destination /WinFlexBison; `
Copy-Item -Path /WinFlexBison/win_bison.exe /WinFlexBison/bison.exe; `
Copy-Item -Path /WinFlexBison/win_flex.exe /WinFlexBison/flex.exe;
# Technique from https://github.com/StefanScherer/dockerfiles-windows/blob/master/mongo/3.6/Dockerfile
WORKDIR /local
ADD https://aka.ms/vs/15/release/vc_redist.x64.exe /local/vc_redist.x64.exe
WORKDIR /fluent-bit/bin/
RUN Start-Process /local/vc_redist.x64.exe -ArgumentList '/install', '/quiet', '/norestart' -NoNewWindow -Wait; `
Copy-Item -Path /Windows/System32/msvcp140.dll -Destination /fluent-bit/bin/; `
Copy-Item -Path /Windows/System32/vccorlib140.dll -Destination /fluent-bit/bin/; `
Copy-Item -Path /Windows/System32/vcruntime140.dll -Destination /fluent-bit/bin/;
ENV VCPKG_VERSION=2024.05.24
# https://github.com/microsoft/vcpkg/blob/2024.05.24/scripts/bootstrap.ps1
ENV VCPKG_ROOT=/dev/vcpkg
WORKDIR /dev
RUN `
Invoke-WebRequest -OutFile /dev/vcpkg.zip https://github.com/microsoft/vcpkg/archive/refs/tags/${ENV:VCPKG_VERSION}.zip; `
Expand-Archive /dev/vcpkg.zip -Destination /dev; `
Remove-Item -Force /dev/vcpkg.zip; `
Rename-Item -Path /dev/vcpkg-${ENV:VCPKG_VERSION} -NewName vcpkg; `
/dev/vcpkg/bootstrap-vcpkg.bat;
RUN vcpkg install --recurse openssl --triplet x64-windows-static; `
vcpkg install --recurse libyaml --triplet x64-windows-static;
# Build Fluent Bit from source - context must be the root of the Git repo
WORKDIR /src/build
COPY . /src/
RUN cmake -G "'Visual Studio 16 2019'" -DOPENSSL_ROOT_DIR='C:\dev\vcpkg\packages\openssl_x64-windows-static' -DFLB_LIBYAML_DIR='C:\dev\vcpkg\packages\libyaml_x64-windows-static' -DCMAKE_BUILD_TYPE=Release ../;`
cmake --build . --config Release;
# Set up config files and binaries in single /fluent-bit hierarchy for easy copy in later stage
RUN New-Item -Path /fluent-bit/etc/ -ItemType "directory"; `
Copy-Item -Path /src/conf/fluent-bit-win32.conf /fluent-bit/etc/fluent-bit.conf; `
Copy-Item -Path /src/conf/parsers.conf /fluent-bit/etc/; `
Copy-Item -Path /src/conf/parsers_ambassador.conf /fluent-bit/etc/; `
Copy-Item -Path /src/conf/parsers_java.conf /fluent-bit/etc/; `
Copy-Item -Path /src/conf/parsers_extra.conf /fluent-bit/etc/; `
Copy-Item -Path /src/conf/parsers_openstack.conf /fluent-bit/etc/; `
Copy-Item -Path /src/conf/parsers_cinder.conf /fluent-bit/etc/; `
Copy-Item -Path /src/conf/plugins.conf /fluent-bit/etc/; `
Copy-Item -Path /src/build/bin/Release/fluent-bit.exe /fluent-bit/bin/; `
Copy-Item -Path /src/build/bin/Release/fluent-bit.dll /fluent-bit/bin/;
#
# Runtime Image - Windows Server Core
#
FROM mcr.microsoft.com/windows/servercore:$WINDOWS_VERSION AS runtime
ARG FLUENTBIT_VERSION=master
ARG IMAGE_CREATE_DATE
ARG IMAGE_SOURCE_REVISION
# Metadata as defined in OCI image spec annotations
# https://github.com/opencontainers/image-spec/blob/master/annotations.md
LABEL org.opencontainers.image.title="Fluent Bit" `
org.opencontainers.image.description="Fluent Bit is an open source and multi-platform Log Processor and Forwarder which allows you to collect data/logs from different sources, unify and send them to multiple destinations. It's fully compatible with Docker and Kubernetes environments." `
org.opencontainers.image.created=$IMAGE_CREATE_DATE `
org.opencontainers.image.version=$FLUENTBIT_VERSION `
org.opencontainers.image.authors="Eduardo Silva <[email protected]>" `
org.opencontainers.image.url="https://hub.docker.com/r/fluent/fluent-bit" `
org.opencontainers.image.documentation="https://docs.fluentbit.io/manual/" `
org.opencontainers.image.vendor="Fluent Organization" `
org.opencontainers.image.licenses="Apache-2.0" `
org.opencontainers.image.source="https://github.com/fluent/fluent-bit" `
org.opencontainers.image.revision=$IMAGE_SOURCE_REVISION
COPY --from=builder /fluent-bit /fluent-bit
RUN setx /M PATH "%PATH%;C:\fluent-bit\bin"
ENTRYPOINT [ "fluent-bit.exe" ]
# Hadolint gets confused by Windows it seems
# hadolint ignore=DL3025
CMD [ "fluent-bit.exe", "-c", "/fluent-bit/etc/fluent-bit.conf" ]