From 67e1c0a9d9f7e5a4b76318ff867cd626973080de Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Thu, 16 Apr 2020 11:22:19 +0100 Subject: [PATCH 1/8] Reduce the amount of layers and data in the Dockerfile --- cmd/loki/Dockerfile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cmd/loki/Dockerfile b/cmd/loki/Dockerfile index 3054e3dfde3be..f8e705047a928 100644 --- a/cmd/loki/Dockerfile +++ b/cmd/loki/Dockerfile @@ -7,15 +7,13 @@ WORKDIR /src/loki RUN make clean && (if [ "${TOUCH_PROTOS}" ]; then make touch-protos; fi) && make BUILD_IN_CONTAINER=false loki FROM alpine:3.9 -RUN apk add --update --no-cache ca-certificates libcap \ - && rm -rf /var/cache/apk/* COPY --from=build /src/loki/cmd/loki/loki /usr/bin/loki COPY cmd/loki/loki-local-config.yaml /etc/loki/local-config.yaml -RUN setcap cap_net_bind_service=+ep /usr/bin/loki - -RUN apk del --no-cache libcap && rm -rf /var/cache/apk/* +RUN apk add --no-cache ca-certificates libcap && \ + setcap cap_net_bind_service=+ep /usr/bin/loki && \ + apk del --no-cache libcap RUN addgroup -g 1000 -S loki && \ adduser -u 1000 -S loki -G loki From e71bbd41611221b838876a6e91e7118c584c9ffc Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Thu, 16 Apr 2020 11:23:45 +0100 Subject: [PATCH 2/8] Change the loki user and data directory to match the default helm configuration --- cmd/loki/Dockerfile | 8 ++++---- cmd/loki/loki-local-config.yaml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmd/loki/Dockerfile b/cmd/loki/Dockerfile index f8e705047a928..a8a0928ada895 100644 --- a/cmd/loki/Dockerfile +++ b/cmd/loki/Dockerfile @@ -15,10 +15,10 @@ RUN apk add --no-cache ca-certificates libcap && \ setcap cap_net_bind_service=+ep /usr/bin/loki && \ apk del --no-cache libcap -RUN addgroup -g 1000 -S loki && \ - adduser -u 1000 -S loki -G loki -RUN mkdir -p /loki && \ - chown -R loki:loki /etc/loki /loki +RUN addgroup -g 10001 -S loki && \ + adduser -u 10001 -S loki -G loki && \ + mkdir -p /data && \ + chown -R loki:loki /etc/loki /data USER loki EXPOSE 3100 diff --git a/cmd/loki/loki-local-config.yaml b/cmd/loki/loki-local-config.yaml index 390f542a8c16b..074621a31ca38 100644 --- a/cmd/loki/loki-local-config.yaml +++ b/cmd/loki/loki-local-config.yaml @@ -27,10 +27,10 @@ schema_config: storage_config: boltdb: - directory: /loki/index + directory: /data/loki/index filesystem: - directory: /loki/chunks + directory: /data/loki/chunks limits_config: enforce_metric_name: false From 5184e144020d4a225d8c0bb6b0970f2addc6db09 Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Thu, 16 Apr 2020 11:24:06 +0100 Subject: [PATCH 3/8] Add an nsswitch.conf to stop localhost DNS requests --- cmd/loki/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/loki/Dockerfile b/cmd/loki/Dockerfile index a8a0928ada895..cf7d5a29fd719 100644 --- a/cmd/loki/Dockerfile +++ b/cmd/loki/Dockerfile @@ -20,6 +20,9 @@ RUN addgroup -g 10001 -S loki && \ mkdir -p /data && \ chown -R loki:loki /etc/loki /data +# See https://github.com/grafana/loki/issues/1928 +RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf + USER loki EXPOSE 3100 ENTRYPOINT [ "/usr/bin/loki" ] From 75c6d05175319e34aa260bfb7f01cf6b8466ef5f Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Thu, 16 Apr 2020 11:24:28 +0100 Subject: [PATCH 4/8] Copy changes to Dockerfile.cross except setep setep is probably not needed anymore due to 3100 being the default port. Also, I'm not sure the amd64 binary works on other arch binaries. --- cmd/loki/Dockerfile.cross | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/cmd/loki/Dockerfile.cross b/cmd/loki/Dockerfile.cross index cef4419dcd913..7e6229b2e120c 100644 --- a/cmd/loki/Dockerfile.cross +++ b/cmd/loki/Dockerfile.cross @@ -13,9 +13,21 @@ WORKDIR /src/loki RUN make clean && GOARCH=$(cat /goarch) GOARM=$(cat /goarm) make BUILD_IN_CONTAINER=false loki FROM alpine:3.9 -RUN apk add --update --no-cache ca-certificates + COPY --from=build /src/loki/cmd/loki/loki /usr/bin/loki COPY cmd/loki/loki-local-config.yaml /etc/loki/local-config.yaml -EXPOSE 80 + +RUN apk add --no-cache ca-certificates + +RUN addgroup -g 10001 -S loki && \ + adduser -u 10001 -S loki -G loki && \ + mkdir -p /data && \ + chown -R loki:loki /etc/loki /data + +# See https://github.com/grafana/loki/issues/1928 +RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf + +USER loki +EXPOSE 3100 ENTRYPOINT [ "/usr/bin/loki" ] CMD ["-config.file=/etc/loki/local-config.yaml"] From 775b22f53282f164e7bf7d282bdb5a0b6673a229 Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Mon, 20 Apr 2020 13:06:02 +0100 Subject: [PATCH 5/8] Install ca-certificates earlier and split creating user and creating dir steps --- cmd/loki/Dockerfile | 8 +++++--- cmd/loki/Dockerfile.cross | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cmd/loki/Dockerfile b/cmd/loki/Dockerfile index cf7d5a29fd719..09d00d29e6cd4 100644 --- a/cmd/loki/Dockerfile +++ b/cmd/loki/Dockerfile @@ -8,16 +8,18 @@ RUN make clean && (if [ "${TOUCH_PROTOS}" ]; then make touch-protos; fi) && make FROM alpine:3.9 +RUN apk add --no-cache ca-certificates + COPY --from=build /src/loki/cmd/loki/loki /usr/bin/loki COPY cmd/loki/loki-local-config.yaml /etc/loki/local-config.yaml -RUN apk add --no-cache ca-certificates libcap && \ +RUN apk add --no-cache libcap && \ setcap cap_net_bind_service=+ep /usr/bin/loki && \ apk del --no-cache libcap RUN addgroup -g 10001 -S loki && \ - adduser -u 10001 -S loki -G loki && \ - mkdir -p /data && \ + adduser -u 10001 -S loki -G loki +RUN mkdir -p /data && \ chown -R loki:loki /etc/loki /data # See https://github.com/grafana/loki/issues/1928 diff --git a/cmd/loki/Dockerfile.cross b/cmd/loki/Dockerfile.cross index 7e6229b2e120c..d58e9294293c5 100644 --- a/cmd/loki/Dockerfile.cross +++ b/cmd/loki/Dockerfile.cross @@ -14,14 +14,14 @@ RUN make clean && GOARCH=$(cat /goarch) GOARM=$(cat /goarm) make BUILD_IN_CONTAI FROM alpine:3.9 +RUN apk add --no-cache ca-certificates + COPY --from=build /src/loki/cmd/loki/loki /usr/bin/loki COPY cmd/loki/loki-local-config.yaml /etc/loki/local-config.yaml -RUN apk add --no-cache ca-certificates - RUN addgroup -g 10001 -S loki && \ - adduser -u 10001 -S loki -G loki && \ - mkdir -p /data && \ + adduser -u 10001 -S loki -G loki +RUN mkdir -p /data && \ chown -R loki:loki /etc/loki /data # See https://github.com/grafana/loki/issues/1928 From a92aaf2f13a1e14c672a259de22a43ab03b45ec4 Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Mon, 20 Apr 2020 13:21:48 +0100 Subject: [PATCH 6/8] Install libcap earlier and don't bother deleting it as it doesn't make the image smaller --- cmd/loki/Dockerfile | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cmd/loki/Dockerfile b/cmd/loki/Dockerfile index 09d00d29e6cd4..65f62a3421290 100644 --- a/cmd/loki/Dockerfile +++ b/cmd/loki/Dockerfile @@ -8,14 +8,12 @@ RUN make clean && (if [ "${TOUCH_PROTOS}" ]; then make touch-protos; fi) && make FROM alpine:3.9 -RUN apk add --no-cache ca-certificates +RUN apk add --no-cache ca-certificates libcap COPY --from=build /src/loki/cmd/loki/loki /usr/bin/loki COPY cmd/loki/loki-local-config.yaml /etc/loki/local-config.yaml -RUN apk add --no-cache libcap && \ - setcap cap_net_bind_service=+ep /usr/bin/loki && \ - apk del --no-cache libcap +RUN setcap cap_net_bind_service=+ep /usr/bin/loki RUN addgroup -g 10001 -S loki && \ adduser -u 10001 -S loki -G loki From 9116d65fbfef74f9d2b70cc392c158914ed65e96 Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Mon, 20 Apr 2020 16:41:07 +0100 Subject: [PATCH 7/8] Revert config changes --- cmd/loki/loki-local-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/loki/loki-local-config.yaml b/cmd/loki/loki-local-config.yaml index 074621a31ca38..390f542a8c16b 100644 --- a/cmd/loki/loki-local-config.yaml +++ b/cmd/loki/loki-local-config.yaml @@ -27,10 +27,10 @@ schema_config: storage_config: boltdb: - directory: /data/loki/index + directory: /loki/index filesystem: - directory: /data/loki/chunks + directory: /loki/chunks limits_config: enforce_metric_name: false From c0680283e652ecc3216b8a8019e37cfb5f8cb340 Mon Sep 17 00:00:00 2001 From: Ben Grabham Date: Tue, 21 Apr 2020 19:43:16 +0100 Subject: [PATCH 8/8] Revert the dockerfile changes needed for the config revert --- cmd/loki/Dockerfile | 4 ++-- cmd/loki/Dockerfile.cross | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/loki/Dockerfile b/cmd/loki/Dockerfile index 65f62a3421290..0f822e44d6dd4 100644 --- a/cmd/loki/Dockerfile +++ b/cmd/loki/Dockerfile @@ -17,8 +17,8 @@ RUN setcap cap_net_bind_service=+ep /usr/bin/loki RUN addgroup -g 10001 -S loki && \ adduser -u 10001 -S loki -G loki -RUN mkdir -p /data && \ - chown -R loki:loki /etc/loki /data +RUN mkdir -p /loki && \ + chown -R loki:loki /etc/loki /loki # See https://github.com/grafana/loki/issues/1928 RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf diff --git a/cmd/loki/Dockerfile.cross b/cmd/loki/Dockerfile.cross index d58e9294293c5..87ab48cd57018 100644 --- a/cmd/loki/Dockerfile.cross +++ b/cmd/loki/Dockerfile.cross @@ -21,8 +21,8 @@ COPY cmd/loki/loki-local-config.yaml /etc/loki/local-config.yaml RUN addgroup -g 10001 -S loki && \ adduser -u 10001 -S loki -G loki -RUN mkdir -p /data && \ - chown -R loki:loki /etc/loki /data +RUN mkdir -p /loki && \ + chown -R loki:loki /etc/loki /loki # See https://github.com/grafana/loki/issues/1928 RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf