52 lines
1.5 KiB
Docker
52 lines
1.5 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
|
|
ARG TARGETPLATFORM
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
|
|
FROM --platform=$BUILDPLATFORM golang:1.23-bookworm AS build
|
|
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
|
--mount=type=cache,target=/go/pkg/mod \
|
|
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/metis ./cmd/metis && \
|
|
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/metis-sentinel ./cmd/metis-sentinel && \
|
|
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/oras oras.land/oras/cmd/oras
|
|
|
|
FROM debian:bookworm-slim AS runtime-base
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates e2fsprogs fdisk util-linux openssh-client xz-utils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
COPY --from=build /out/metis /usr/local/bin/metis
|
|
COPY --from=build /out/metis-sentinel /usr/local/bin/metis-sentinel
|
|
COPY --from=build /out/oras /usr/local/bin/oras
|
|
COPY inventory.example.yaml /app/inventory.example.yaml
|
|
COPY inventory.titan-rpi4.yaml /app/inventory.titan-rpi4.yaml
|
|
COPY overlays /app/overlays
|
|
|
|
FROM runtime-base AS runtime
|
|
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["metis"]
|
|
CMD ["serve"]
|
|
|
|
FROM debian:bookworm-slim AS sentinel
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates util-linux \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=build /out/metis-sentinel /usr/local/bin/metis-sentinel
|
|
|
|
ENTRYPOINT ["metis-sentinel"]
|