Ctrl K
ComunidadGuías…

docker/Dockerfile.worker-overlay

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# syntax=docker/dockerfile:1.7

ARG GO_BUILD_IMAGE=docker.io/library/golang:1.25-bookworm@sha256:6359592445455f2dbe2412bed411336035bc019a50017720d77454ffdd6d0f82
ARG WORKER_RUNTIME_IMAGE=public.ecr.aws/n4e0e1y0/beta9-worker@sha256:5792f3b5c2ce00e37165db3ed1f1d39b245da6ec922a3cf688f437280cae0308

# Built from docker/Dockerfile.microvm; CI checks this matches hack/microvm-image-tag.sh.
ARG MICROVM_IMAGE=public.ecr.aws/n4e0e1y0/beta9-microvm:d22ea0c29c1c

# MICROVM_DEV=1 also compiles the microvm integration test binary into the
# image so hack/microvm-smoke.sh can run it in place with the worker's PATH.
ARG MICROVM_DEV=0

FROM --platform=$BUILDPLATFORM ${GO_BUILD_IMAGE} AS binaries

ARG TARGETOS
ARG TARGETARCH
ARG MICROVM_DEV
ENV GONOSUMDB="github.com/beam-cloud/*"
WORKDIR /workspace

COPY go.mod go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod go mod download

COPY cmd/ ./cmd/
COPY pkg/ ./pkg/
COPY proto/ ./proto/

RUN --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    mkdir -p /out && \
    CGO_ENABLED=0 GOOS="$TARGETOS" GOARCH="$TARGETARCH" \
      go build -trimpath -o /out/worker ./cmd/worker/main.go && \
    CGO_ENABLED=0 GOOS="$TARGETOS" GOARCH="$TARGETARCH" \
      go build -trimpath -gcflags="all=-N -l" -gcflags="gvisor.dev/gvisor/pkg/cpuid=" -o /out/worker-debug ./cmd/worker/main.go && \
    CGO_ENABLED=0 GOOS="$TARGETOS" GOARCH="$TARGETARCH" \
      go build -trimpath -o /out/agent ./cmd/agent && \
    ln /out/agent /out/beam-agent && \
    CGO_ENABLED=0 GOOS="$TARGETOS" GOARCH="$TARGETARCH" \
      go build -trimpath -ldflags="-s -w" -o /out/beam-vminit ./cmd/vminit && \
    if [ "$MICROVM_DEV" = "1" ]; then \
      CGO_ENABLED=0 GOOS="$TARGETOS" GOARCH="$TARGETARCH" \
        go test -c -tags microvm -o /out/microvm.test ./pkg/runtime; \
    fi

FROM ${MICROVM_IMAGE} AS microvm

FROM --platform=$TARGETPLATFORM ${WORKER_RUNTIME_IMAGE}

ARG TARGETARCH
ARG GOPROC_VERSION=0.1.18
ARG SOURCE_REVISION
ARG SOURCE_HASH
LABEL org.opencontainers.image.revision="$SOURCE_REVISION" \
      dev.beam.source-hash="$SOURCE_HASH"

COPY docker/goproc.sha256 /tmp/goproc.sha256
RUN cd /tmp && \
    wget "https://github.com/beam-cloud/goproc/releases/download/v${GOPROC_VERSION}/goproc-${GOPROC_VERSION}-linux-${TARGETARCH}" && \
    sha256sum --check --ignore-missing goproc.sha256 && \
    install -m 0755 "goproc-${GOPROC_VERSION}-linux-${TARGETARCH}" /usr/local/bin/goproc && \
    rm goproc.sha256 "goproc-${GOPROC_VERSION}-linux-${TARGETARCH}"

COPY --link --from=binaries /out/ /usr/local/bin/
COPY --link --from=microvm /microvm/bin/ /usr/local/bin/
COPY --link --from=microvm /microvm/share/ /usr/local/share/beam/microvm/