Ctrl K
ComunidadGuías…

agent/Dockerfile

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

Archivo original ↗Preguntar a KiBot
ARG DOCKERHUB_MIRROR=
ARG GOLANG_VERSION
ARG ALPINE_VERSION
ARG AIR_VERSION
ARG GOLANGCI_LINT_VERSION
ARG MOCKERY_VERSION

FROM --platform=$BUILDPLATFORM ${DOCKERHUB_MIRROR}cosmtrek/air:${AIR_VERSION} AS air
FROM --platform=$BUILDPLATFORM ${DOCKERHUB_MIRROR}golangci/golangci-lint:${GOLANGCI_LINT_VERSION}-alpine AS golangci-lint
FROM --platform=$BUILDPLATFORM ${DOCKERHUB_MIRROR}vektra/mockery:${MOCKERY_VERSION} AS mockery

FROM --platform=$BUILDPLATFORM ${DOCKERHUB_MIRROR}golang:${GOLANG_VERSION} AS toolchain

RUN apk add --no-cache ca-certificates git

FROM toolchain AS base

ARG TARGETARCH
ARG TARGETOS=linux

WORKDIR $GOPATH/src/github.com/shellhub-io/shellhub

COPY ./go.mod ./go.sum ./

WORKDIR $GOPATH/src/github.com/shellhub-io/shellhub/agent

COPY ./agent/go.mod ./agent/go.sum ./

RUN go mod download

FROM base AS builder

ARG SHELLHUB_VERSION=latest
ARG TARGETARCH
ARG TARGETVARIANT
ARG TARGETOS=linux

COPY ./pkg $GOPATH/src/github.com/shellhub-io/shellhub/pkg
COPY ./agent .

WORKDIR $GOPATH/src/github.com/shellhub-io/shellhub

RUN go mod download

WORKDIR $GOPATH/src/github.com/shellhub-io/shellhub/agent

RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT#v} go build -tags docker -ldflags "-s -w -X main.AgentVersion=${SHELLHUB_VERSION}" -o agent

FROM ${DOCKERHUB_MIRROR}alpine:${ALPINE_VERSION} AS runtime-utils

RUN apk add --no-cache util-linux setpriv ca-certificates libgcc

FROM toolchain AS tools

RUN apk add --no-cache openssl openssh-client util-linux setpriv
COPY --from=air /go/bin/air /usr/local/bin/air
COPY --from=golangci-lint /usr/bin/golangci-lint /usr/local/bin/golangci-lint
COPY --from=mockery /usr/local/bin/mockery /usr/local/bin/mockery

FROM tools AS development

COPY --from=base $GOPATH/pkg/mod $GOPATH/pkg/mod
COPY --from=base $GOPATH/src/github.com/shellhub-io/shellhub $GOPATH/src/github.com/shellhub-io/shellhub

WORKDIR $GOPATH/src/github.com/shellhub-io/shellhub

RUN go mod download

ARG USERNAME
ARG PASSWORD

RUN [ -z "$USERNAME" ] || { adduser -D "$USERNAME" && echo "$USERNAME:$PASSWORD" | chpasswd; }

COPY ./agent/entrypoint-dev.sh /entrypoint.sh

WORKDIR $GOPATH/src/github.com/shellhub-io/shellhub/agent

ENTRYPOINT ["/entrypoint.sh"]

FROM scratch

ARG TARGETARCH

COPY --from=runtime-utils /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

COPY --from=runtime-utils /usr/bin/nsenter /usr/bin/
COPY --from=runtime-utils /bin/setpriv /bin/

COPY --from=runtime-utils /usr/lib/libcap-ng.so.* /usr/lib/
COPY --from=runtime-utils /usr/lib/libeconf.so.* /usr/lib/
COPY --from=runtime-utils /usr/lib/libgcc_s.so.1 /usr/lib/

COPY --from=runtime-utils /lib/ld-musl-*.so.1 /lib/

COPY --from=builder /go/src/github.com/shellhub-io/shellhub/agent/agent /bin/agent

ENTRYPOINT ["/bin/agent"]