summaryrefslogtreecommitdiffstats
path: root/fluent-bit/dockerfiles/Dockerfile.windows
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/dockerfiles/Dockerfile.windows')
-rw-r--r--fluent-bit/dockerfiles/Dockerfile.windows97
1 files changed, 97 insertions, 0 deletions
diff --git a/fluent-bit/dockerfiles/Dockerfile.windows b/fluent-bit/dockerfiles/Dockerfile.windows
new file mode 100644
index 00000000..eae4bda3
--- /dev/null
+++ b/fluent-bit/dockerfiles/Dockerfile.windows
@@ -0,0 +1,97 @@
+# escape=`
+
+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"
+
+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/;
+
+# Install Chocolatey and OpenSSL: https://github.com/StefanScherer/dockerfiles-windows/blob/main/openssl/Dockerfile
+ENV chocolateyUseWindowsCompression false
+ENV chocolateyVersion '1.4.0'
+RUN iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')); `
+ choco feature disable --name showDownloadProgress ; `
+ choco install -y openssl;
+
+# 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:\Program Files\OpenSSL-Win64' -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 <eduardo@calyptia.com>" `
+ 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" ]