编译arm64版的fluent-bit镜像主要我这边主要遇到了三个坑,下面有 Dockerfile
第一个是将 libssl1.0-dev换成了 libssl1.1,这主要是huanggze 提供的思路,见issue https://github.com/fluent/fluent-bit/issues/1791
第二个是编译go时可能有些包拉取超时,于是设置了国内的GOPROXY https://mirrors.aliyun.com/goproxy/,direct
第三个是gcr.io/distroless/cc镜像在我的arm环境运行不了,我的环境是国产机器,可能对比原生arm有修改,于是换成了debian:stretch镜像,或许原生arm可能没这个问题。
FROM debian:stretch as builderc
# Fluent Bit version
ENV FLB_MAJOR 1
ENV FLB_MINOR 3
ENV FLB_PATCH 2
ENV FLB_VERSION 1.3.2
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
make \
wget \
unzip \
libssl1.1 \
libsasl2-dev \
pkg-config \
libsystemd-dev \
zlib1g-dev \
flex \
bison
RUN mkdir -p /fluent-bit/bin /fluent-bit/etc /fluent-bit/log /tmp/src/
COPY . /tmp/src/
RUN rm -rf /tmp/src/build/*
WORKDIR /tmp/src/build/
RUN cmake -DFLB_DEBUG=Off \
-DFLB_TRACE=Off \
-DFLB_JEMALLOC=On \
-DFLB_BUFFERING=On \
-DFLB_TLS=On \
-DFLB_SHARED_LIB=Off \
-DFLB_EXAMPLES=Off \
-DFLB_HTTP_SERVER=On \
-DFLB_IN_SYSTEMD=On \
-DFLB_OUT_KAFKA=On ..
RUN make -j $(getconf _NPROCESSORS_ONLN)
RUN install bin/fluent-bit /fluent-bit/bin/
# Configuration files
COPY conf/fluent-bit.conf \
conf/fluent-bit-custom.conf \
conf/parsers.conf \
conf/parsers_java.conf \
conf/parsers_extra.conf \
conf/parsers_openstack.conf \
conf/parsers_cinder.conf \
conf/plugins.conf \
/fluent-bit/etc/
FROM golang:1.10.1-alpine3.7 as buildergo
ENV GOPROXY https://mirrors.aliyun.com/goproxy/,direct
WORKDIR /go/src
COPY fluentbitdaemon.go .
COPY fluentbitdisable.go .
RUN apk update && apk add git
RUN go get github.com/golang/glog
RUN CGO_ENABLED=0 go build -o fluentbitdaemon ./fluentbitdaemon.go
RUN CGO_ENABLED=0 go build -o fluentbitdisable ./fluentbitdisable.go
FROM debian:stretch
MAINTAINER Eduardo Silva <eduardo@treasure-data.com>
LABEL Description="Fluent Bit docker image" Vendor="Fluent Organization" Version="1.1"
COPY --from=builderc /usr/lib/aarch64-linux-gnu/*sasl* /usr/lib/aarch64-linux-gnu/
COPY --from=builderc /usr/lib/aarch64-linux-gnu/libz* /usr/lib/aarch64-linux-gnu/
COPY --from=builderc /lib/aarch64-linux-gnu/libz* /lib/aarch64-linux-gnu/
COPY --from=builderc /usr/lib/aarch64-linux-gnu/libssl.so* /usr/lib/aarch64-linux-gnu/
COPY --from=builderc /usr/lib/aarch64-linux-gnu/libcrypto.so* /usr/lib/aarch64-linux-gnu/
# These below are all needed for systemd
COPY --from=builderc /lib/aarch64-linux-gnu/libsystemd* /lib/aarch64-linux-gnu/
COPY --from=builderc /lib/aarch64-linux-gnu/libselinux.so* /lib/aarch64-linux-gnu/
COPY --from=builderc /lib/aarch64-linux-gnu/liblzma.so* /lib/aarch64-linux-gnu/
COPY --from=builderc /usr/lib/aarch64-linux-gnu/liblz4.so* /usr/lib/aarch64-linux-gnu/
COPY --from=builderc /lib/aarch64-linux-gnu/libgcrypt.so* /lib/aarch64-linux-gnu/
COPY --from=builderc /lib/aarch64-linux-gnu/libpcre.so* /lib/aarch64-linux-gnu/
COPY --from=builderc /lib/aarch64-linux-gnu/libgpg-error.so* /lib/aarch64-linux-gnu/
COPY --from=builderc /fluent-bit /fluent-bit
COPY --from=buildergo /go/src/fluentbitdaemon /fluent-bit/bin/fluentbitdaemon
COPY --from=buildergo /go/src/fluentbitdisable /fluent-bit/bin/fluentbitdisable
#
EXPOSE 2020
# Entry point
CMD ["/fluent-bit/bin/fluentbitdaemon"]