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 <markus.lehtonen@intel.com>
This commit is contained in:
Markus Lehtonen 2025-08-06 17:00:31 +03:00
parent 3571db856e
commit 1cd00b6de2
2 changed files with 42 additions and 0 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
build/

41
plugins/Dockerfile Normal file
View File

@ -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"]