From 1cd00b6de246211b99956b483e72562a50125ff7 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Wed, 6 Aug 2025 17:00:31 +0300 Subject: [PATCH] plugins: add Dockerfile for building images Add a generic dockerfile for building container images of the sample plugins. The build command creates statically linked binaries and the resulting images are minimal, based on scratch base image. Signed-off-by: Markus Lehtonen --- .dockerignore | 1 + plugins/Dockerfile | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 .dockerignore create mode 100644 plugins/Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +build/ diff --git a/plugins/Dockerfile b/plugins/Dockerfile new file mode 100644 index 0000000..11f0b60 --- /dev/null +++ b/plugins/Dockerfile @@ -0,0 +1,41 @@ +# Copyright The containerd Authors. + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG GO_VERSION=1.24 + +FROM golang:${GO_VERSION}-bullseye AS builder +ARG PLUGIN + +WORKDIR /go/src + +# Cache dependencies in a separate layer +COPY go.mod go.sum . +RUN --mount=type=cache,target=/go/pkg/mod/ go mod download + +# Build +COPY . . + +RUN --mount=type=cache,target=/go/pkg/mod/ \ + make /go/src/build/bin/${PLUGIN} \ + GO_BUILD="CGO_ENABLED=0 go build -ldflags '-extldflags=-static'" + +# Construct final image +FROM scratch +ARG PLUGIN + +COPY --from=builder /go/src/build/bin/${PLUGIN} /bin/plugin + +ENV NRI_PLUGIN_NAME=${PLUGIN} + +ENTRYPOINT ["/bin/plugin"]