|
| 1 | +# Go developer image based on DevRunner base (Debian bookworm) |
| 2 | +ARG BASE_IMAGE=ghcr.io/chaitin/monkeycode-runner/base:bookworm |
| 3 | +FROM ${BASE_IMAGE} |
| 4 | + |
| 5 | +LABEL org.opencontainers.image.title="DevRunner Go" \ |
| 6 | + org.opencontainers.image.source="https://github.com/chaitin/DevRunner" \ |
| 7 | + org.opencontainers.image.description="Golang toolbox image for DevRunner stacks" |
| 8 | + |
| 9 | +ARG GO_VERSION=1.25.5 |
| 10 | +ARG GO_SHA256_AMD64=9e9b755d63b36acf30c12a9a3fc379243714c1c6d3dd72861da637f336ebb35b |
| 11 | +ARG GO_SHA256_ARM64=b00b694903d126c588c378e72d3545549935d3982635ba3f7a964c9fa23fe3b9 |
| 12 | + |
| 13 | +ARG GOLANGCI_LINT_VERSION=v1.61.0 |
| 14 | +ARG GOLANGCI_LINT_SHA256_AMD64=77cb0af99379d9a21d5dc8c38364d060e864a01bd2f3e30b5e8cc550c3a54111 |
| 15 | +ARG GOLANGCI_LINT_SHA256_ARM64=af60ac05566d9351615cb31b4cc070185c25bf8cbd9b09c1873aa5ec6f3cc17e |
| 16 | + |
| 17 | +ARG TARGETOS |
| 18 | +ARG TARGETARCH |
| 19 | +ARG TARGETVARIANT |
| 20 | + |
| 21 | +ENV GOROOT=/usr/local/go \ |
| 22 | + GOPATH=/go \ |
| 23 | + GOCACHE=/go/cache \ |
| 24 | + PATH=/usr/local/go/bin:/go/bin:${PATH} |
| 25 | + |
| 26 | +RUN set -eux; \ |
| 27 | + mkdir -p "${GOPATH}" "${GOCACHE}"; \ |
| 28 | + GO_OS="${TARGETOS:-linux}"; \ |
| 29 | + GO_ARCH="${TARGETARCH:-amd64}"; \ |
| 30 | + case "${GO_ARCH}" in \ |
| 31 | + amd64) GO_ARCHIVE="${GO_OS}-amd64"; GO_SHA256="${GO_SHA256_AMD64}"; GCL_ARCH="linux-amd64"; GCL_SHA256="${GOLANGCI_LINT_SHA256_AMD64}";; \ |
| 32 | + arm64) GO_ARCHIVE="${GO_OS}-arm64"; GO_SHA256="${GO_SHA256_ARM64}"; GCL_ARCH="linux-arm64"; GCL_SHA256="${GOLANGCI_LINT_SHA256_ARM64}";; \ |
| 33 | + "") GO_ARCHIVE="${GO_OS}-amd64"; GO_SHA256="${GO_SHA256_AMD64}"; GCL_ARCH="linux-amd64"; GCL_SHA256="${GOLANGCI_LINT_SHA256_AMD64}";; \ |
| 34 | + *) echo "Unsupported GOARCH: ${GO_ARCH}${TARGETVARIANT:+ (${TARGETVARIANT})}" >&2; exit 1;; \ |
| 35 | + esac; \ |
| 36 | + curl -fsSL "https://go.dev/dl/go${GO_VERSION}.${GO_ARCHIVE}.tar.gz" -o /tmp/go.tar.gz; \ |
| 37 | + echo "${GO_SHA256} /tmp/go.tar.gz" | sha256sum -c -; \ |
| 38 | + tar -C /usr/local -xzf /tmp/go.tar.gz; \ |
| 39 | + rm /tmp/go.tar.gz; \ |
| 40 | + go env; \ |
| 41 | + go install honnef.co/go/tools/cmd/staticcheck@latest; \ |
| 42 | + go install mvdan.cc/gofumpt@latest; \ |
| 43 | + go install github.com/swaggo/swag/cmd/swag@latest; \ |
| 44 | + GOLANGCI_LINT_VERSION_TRIMMED="${GOLANGCI_LINT_VERSION#v}"; \ |
| 45 | + curl -fsSL "https://github.com/golangci/golangci-lint/releases/download/${GOLANGCI_LINT_VERSION}/golangci-lint-${GOLANGCI_LINT_VERSION_TRIMMED}-${GCL_ARCH}.tar.gz" -o /tmp/golangci-lint.tgz; \ |
| 46 | + echo "${GCL_SHA256} /tmp/golangci-lint.tgz" | sha256sum -c -; \ |
| 47 | + tar -C /tmp -xzf /tmp/golangci-lint.tgz; \ |
| 48 | + install -m 0755 "/tmp/golangci-lint-${GOLANGCI_LINT_VERSION_TRIMMED}-${GCL_ARCH}/golangci-lint" /usr/local/bin/golangci-lint; \ |
| 49 | + rm -rf /tmp/golangci-lint* |
| 50 | + |
| 51 | +WORKDIR /workspace |
0 commit comments