From ac0b74ee3d6f37016115b3d04028b3de1a926b11 Mon Sep 17 00:00:00 2001 From: jaronoff97 Date: Mon, 1 Jun 2026 16:26:13 -0400 Subject: [PATCH 1/3] fix dockerignore --- distribution/docker/tero/Dockerfile.dockerignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 distribution/docker/tero/Dockerfile.dockerignore diff --git a/distribution/docker/tero/Dockerfile.dockerignore b/distribution/docker/tero/Dockerfile.dockerignore new file mode 100644 index 0000000000000..124007411494f --- /dev/null +++ b/distribution/docker/tero/Dockerfile.dockerignore @@ -0,0 +1,4 @@ +* +!LICENSE +!amd64 +!arm64 From b2eed0d7de5cf48d7a6c17b95e27115e31cfa71b Mon Sep 17 00:00:00 2001 From: jaronoff97 Date: Mon, 1 Jun 2026 19:02:41 -0400 Subject: [PATCH 2/3] better docker image --- .github/workflows/tero-release.yaml | 6 +++- arm64/vector | Bin 0 -> 67792 bytes distribution/docker/tero/Dockerfile | 43 ++++++++++++++-------------- 3 files changed, 27 insertions(+), 22 deletions(-) create mode 100755 arm64/vector diff --git a/.github/workflows/tero-release.yaml b/.github/workflows/tero-release.yaml index 6e4354925f34d..ce3556fd90dc1 100644 --- a/.github/workflows/tero-release.yaml +++ b/.github/workflows/tero-release.yaml @@ -120,7 +120,11 @@ jobs: rustflags: "" - name: Cache cargo registry & build - uses: actions/cache@v4 + # Blacksmith's cache action keeps save/restore on their colocated + # network — roughly an order of magnitude faster than actions/cache@v4 + # for multi-GB `target/` payloads and not subject to GitHub's 10 GB + # per-repo cache cap. + uses: useblacksmith/cache@v5 with: path: | ~/.cargo/registry/index/ diff --git a/arm64/vector b/arm64/vector new file mode 100755 index 0000000000000000000000000000000000000000..632f3c7a2e24b82ee4b313e49efde540472f8838 GIT binary patch literal 67792 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 T>~Y_Xa%m>5Cv!rF2_*Z!>YGl5 literal 0 HcmV?d00001 diff --git a/distribution/docker/tero/Dockerfile b/distribution/docker/tero/Dockerfile index 76606ff266dd8..f471f82e06505 100644 --- a/distribution/docker/tero/Dockerfile +++ b/distribution/docker/tero/Dockerfile @@ -1,9 +1,11 @@ -# Tero Vector — runtime image +# Tero Vector — runtime image. # -# Receives a prebuilt `vector` binary in the build context and bakes it into -# a minimal Debian-slim runtime. Build orchestration lives in -# `.github/workflows/tero-release.yaml`, which compiles the binary natively -# on amd64 and arm64 runners and supplies the right binary per --platform. +# Mirrors `distribution/docker/debian/Dockerfile` (same base, same apt set) +# but skips upstream's two-stage `.deb` install — the binary is supplied +# directly via the build context by `.github/workflows/tero-release.yaml`. +# libssl3t64 + libstdc++6 are listed explicitly here because upstream gets +# them transitively from the .deb's Depends; we have no .deb so we install +# them by name. # # Build args: # TARGETARCH Set automatically by buildx (`amd64` | `arm64`). Selects @@ -13,38 +15,37 @@ # amd64/vector Linux x86_64 binary # arm64/vector Linux aarch64 binary # LICENSE License file (copied for OCI metadata) -# README.md Optional, included for OCI metadata -FROM docker.io/library/debian:bookworm-slim@sha256:0104b334637a5f19aa9c983a91b54c89887c0984081f2068983107a6f6c21eeb AS runtime +FROM docker.io/debian:trixie-slim@sha256:b6e2a152f22a40ff69d92cb397223c906017e1391a73c952b588e51af8883bf8 ARG TARGETARCH -# Common Vector runtime dependencies plus libstdc++ for Vectorscan. +LABEL org.opencontainers.image.url="https://vector.dev" +LABEL org.opencontainers.image.source="https://github.com/usetero/vector" +LABEL org.opencontainers.image.documentation="https://vector.dev/docs" +LABEL org.opencontainers.image.title="vector" +LABEL org.opencontainers.image.description="Tero distribution of Vector with the policy transform enabled." +LABEL org.opencontainers.image.licenses="MPL-2.0" +LABEL org.opencontainers.image.vendor="Tero" + +# we want the latest versions of these # hadolint ignore=DL3008 -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ +RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ tzdata \ libsasl2-2 \ - libssl3 \ + libssl3t64 \ libstdc++6 \ && rm -rf /var/lib/apt/lists/* -LABEL org.opencontainers.image.title="vector" -LABEL org.opencontainers.image.description="Tero distribution of Vector with the policy transform enabled." -LABEL org.opencontainers.image.source="https://github.com/usetero/vector" -LABEL org.opencontainers.image.licenses="MPL-2.0" -LABEL org.opencontainers.image.vendor="Tero" - -# Pull the per-arch binary from the build context. The workflow places -# binaries under `amd64/vector` and `arm64/vector` before invoking buildx. COPY --chmod=0755 ${TARGETARCH}/vector /usr/bin/vector COPY LICENSE /usr/share/doc/vector/LICENSE -# Smoke test — fail the image build if the binary can't even print its version. +RUN mkdir -p /var/lib/vector + +# Smoke test RUN ["vector", "--version"] -# Vector's API listens on 8686 by default. EXPOSE 8686 ENTRYPOINT ["/usr/bin/vector"] From 5a3bbbce12429448e7d275e5b9edea489e655c78 Mon Sep 17 00:00:00 2001 From: jaronoff97 Date: Mon, 1 Jun 2026 19:02:50 -0400 Subject: [PATCH 3/3] whoop --- arm64/vector | Bin 67792 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 arm64/vector diff --git a/arm64/vector b/arm64/vector deleted file mode 100755 index 632f3c7a2e24b82ee4b313e49efde540472f8838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67792 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 T>~Y_Xa%m>5Cv!rF2_*Z!>YGl5