mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
chore(dogfood): evict 22 freeloading tools from the Dockerfile (#23378)
Removes unused tools from dogfood Dockerfile: - Go tools `moq`, `go-swagger`, `goreleaser`, `goveralls`, `kind`, `helm-docs`, `gcr-cleaner-cli` - curl-installed `cloud_sql_proxy`, `dive`, `docker-credential-gcr`, `grype`, `kube-linter`, `stripe` CLI, `terragrunt`, `yq` v3, GoLand 2021.2 , ANTLR v4 jar - apt packages `cmake`, `google-cloud-sdk-datastore-emulator`, `graphviz`, `packer` > 🤖 This PR was created with the help of Coder Agents, and was reviewed by my human. 🧑💻
This commit is contained in:
@@ -32,12 +32,8 @@ RUN apt-get update && \
|
||||
tar --extract --gzip --directory=/usr/local/go --file=/usr/local/go.tar.gz --strip-components=1 && \
|
||||
mkdir --parents "$GOPATH" && \
|
||||
go env -w GOSUMDB=sum.golang.org && \
|
||||
# moq for Go tests.
|
||||
go install github.com/matryer/moq@v0.2.3 && \
|
||||
# swag for Swagger doc generation
|
||||
go install github.com/swaggo/swag/cmd/swag@v1.16.2 && \
|
||||
# go-swagger tool to generate the go coder api client
|
||||
go install github.com/go-swagger/go-swagger/cmd/swagger@v0.28.0 && \
|
||||
# goimports for updating imports
|
||||
go install golang.org/x/tools/cmd/goimports@v0.41.0 && \
|
||||
# protoc-gen-go is needed to build sysbox from source
|
||||
@@ -46,41 +42,26 @@ RUN apt-get update && \
|
||||
go install storj.io/drpc/cmd/protoc-gen-go-drpc@v0.0.34 && \
|
||||
# migrate for migration support for v2
|
||||
go install github.com/golang-migrate/migrate/v4/cmd/migrate@v4.15.1 && \
|
||||
# goreleaser for compiling v2 binaries
|
||||
go install github.com/goreleaser/goreleaser@v1.6.1 && \
|
||||
# Install the latest version of gopls for editors that support
|
||||
# the language server protocol (v0.21.0+ required for Go 1.25)
|
||||
go install golang.org/x/tools/gopls@v0.21.0 && \
|
||||
# gotestsum makes test output more readable
|
||||
go install gotest.tools/gotestsum@v1.9.0 && \
|
||||
# goveralls collects code coverage metrics from tests
|
||||
# and sends to Coveralls
|
||||
go install github.com/mattn/goveralls@v0.0.11 && \
|
||||
# kind for running Kubernetes-in-Docker, needed for tests
|
||||
go install sigs.k8s.io/kind@v0.10.0 && \
|
||||
# helm-docs generates our Helm README based on a template and the
|
||||
# charts and values files
|
||||
go install github.com/norwoodj/helm-docs/cmd/helm-docs@v1.5.0 && \
|
||||
# sqlc for Go code generation
|
||||
# Switched to coder/sqlc fork to fix ambiguous column bug, see:
|
||||
# - https://github.com/coder/sqlc/pull/1
|
||||
# - https://github.com/sqlc-dev/sqlc/pull/4159
|
||||
(CGO_ENABLED=1 go install github.com/coder/sqlc/cmd/sqlc@aab4e865a51df0c43e1839f81a9d349b41d14f05) && \
|
||||
# gcr-cleaner-cli used by CI to prune unused images
|
||||
go install github.com/sethvargo/gcr-cleaner/cmd/gcr-cleaner-cli@v0.5.1 && \
|
||||
# ruleguard for checking custom rules, without needing to run all of
|
||||
# golangci-lint. Check the go.mod in the release of golangci-lint that
|
||||
# we're using for the version of go-critic that it embeds, then check
|
||||
# the version of ruleguard in go-critic for that tag.
|
||||
go install github.com/quasilyte/go-ruleguard/cmd/ruleguard@v0.3.13 && \
|
||||
# go-releaser for building 'fat binaries' that work cross-platform
|
||||
go install github.com/goreleaser/goreleaser@v1.6.1 && \
|
||||
# shfmt for shell script formatting
|
||||
go install mvdan.cc/sh/v3/cmd/shfmt@v3.12.0 && \
|
||||
# nfpm is used with `make build` to make release packages
|
||||
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@v2.35.1 && \
|
||||
# yq v4 is used to process yaml files in coder v2. Conflicts with
|
||||
# yq v3 used in v1.
|
||||
# yq v4 for processing YAML files (renamed to yq4 for scripts/lib.sh).
|
||||
go install github.com/mikefarah/yq/v4@v4.44.3 && \
|
||||
mv /tmp/bin/yq /tmp/bin/yq4 && \
|
||||
# mockgen for generating mocks (v0.6.0+ required for Go 1.25)
|
||||
@@ -144,7 +125,6 @@ RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.edge.kernel.org/u
|
||||
bind9-dnsutils \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
containerd.io \
|
||||
crypto-policies \
|
||||
curl \
|
||||
@@ -159,8 +139,6 @@ RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.edge.kernel.org/u
|
||||
git \
|
||||
gnupg \
|
||||
google-cloud-sdk \
|
||||
google-cloud-sdk-datastore-emulator \
|
||||
graphviz \
|
||||
helix \
|
||||
htop \
|
||||
httpie \
|
||||
@@ -184,7 +162,6 @@ RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.edge.kernel.org/u
|
||||
openjdk-11-jdk-headless \
|
||||
openssh-server \
|
||||
openssl \
|
||||
packer \
|
||||
pkg-config \
|
||||
postgresql-16 \
|
||||
python3 \
|
||||
@@ -306,54 +283,25 @@ RUN systemctl enable \
|
||||
|
||||
# Install tools with published releases, where that is the
|
||||
# preferred/recommended installation method.
|
||||
ARG CLOUD_SQL_PROXY_VERSION=2.2.0 \
|
||||
DIVE_VERSION=0.10.0 \
|
||||
DOCKER_GCR_VERSION=2.1.8 \
|
||||
GOLANGCI_LINT_VERSION=1.64.8 \
|
||||
GRYPE_VERSION=0.61.1 \
|
||||
ARG GOLANGCI_LINT_VERSION=1.64.8 \
|
||||
HELM_VERSION=3.12.0 \
|
||||
KUBE_LINTER_VERSION=0.8.1 \
|
||||
KUBECTX_VERSION=0.9.4 \
|
||||
STRIPE_VERSION=1.14.5 \
|
||||
TERRAGRUNT_VERSION=0.45.11 \
|
||||
SYFT_VERSION=1.20.0 \
|
||||
COSIGN_VERSION=2.4.3 \
|
||||
BUN_VERSION=1.2.15
|
||||
|
||||
# cloud_sql_proxy, for connecting to cloudsql instances
|
||||
# the upstream go.mod prevents this from being installed with go install
|
||||
RUN curl --silent --show-error --location --fail --output /usr/local/bin/cloud_sql_proxy "https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v${CLOUD_SQL_PROXY_VERSION}/cloud-sql-proxy.linux.amd64" && \
|
||||
chmod a=rx /usr/local/bin/cloud_sql_proxy && \
|
||||
# dive for scanning image layer utilization metrics in CI
|
||||
curl --silent --show-error --location --fail "https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- dive && \
|
||||
# docker-credential-gcr is a Docker credential helper for pushing/pulling
|
||||
# images from Google Container Registry and Artifact Registry
|
||||
curl --silent --show-error --location --fail "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${DOCKER_GCR_VERSION}/docker-credential-gcr_linux_amd64-${DOCKER_GCR_VERSION}.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- docker-credential-gcr && \
|
||||
RUN \
|
||||
# golangci-lint performs static code analysis for our Go code
|
||||
curl --silent --show-error --location --fail "https://github.com/golangci/golangci-lint/releases/download/v${GOLANGCI_LINT_VERSION}/golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- --strip-components=1 "golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64/golangci-lint" && \
|
||||
# Anchore Grype for scanning container images for security issues
|
||||
curl --silent --show-error --location --fail "https://github.com/anchore/grype/releases/download/v${GRYPE_VERSION}/grype_${GRYPE_VERSION}_linux_amd64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- grype && \
|
||||
# Helm is necessary for deploying Coder
|
||||
curl --silent --show-error --location --fail "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- --strip-components=1 linux-amd64/helm && \
|
||||
# kube-linter for linting Kubernetes objects, including those
|
||||
# that Helm generates from our charts
|
||||
curl --silent --show-error --location --fail "https://github.com/stackrox/kube-linter/releases/download/v${KUBE_LINTER_VERSION}/kube-linter-linux" --output /usr/local/bin/kube-linter && \
|
||||
# kubens and kubectx for managing Kubernetes namespaces and contexts
|
||||
curl --silent --show-error --location --fail "https://github.com/ahmetb/kubectx/releases/download/v${KUBECTX_VERSION}/kubectx_v${KUBECTX_VERSION}_linux_x86_64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- kubectx && \
|
||||
curl --silent --show-error --location --fail "https://github.com/ahmetb/kubectx/releases/download/v${KUBECTX_VERSION}/kubens_v${KUBECTX_VERSION}_linux_x86_64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- kubens && \
|
||||
# stripe for coder.com billing API
|
||||
curl --silent --show-error --location --fail "https://github.com/stripe/stripe-cli/releases/download/v${STRIPE_VERSION}/stripe_${STRIPE_VERSION}_linux_x86_64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- stripe && \
|
||||
# terragrunt for running Terraform and Terragrunt files
|
||||
curl --silent --show-error --location --fail --output /usr/local/bin/terragrunt "https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_amd64" && \
|
||||
chmod a=rx /usr/local/bin/terragrunt && \
|
||||
# Anchore Syft for SBOM generation
|
||||
curl --silent --show-error --location --fail "https://github.com/anchore/syft/releases/download/v${SYFT_VERSION}/syft_${SYFT_VERSION}_linux_amd64.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/bin --file=- syft && \
|
||||
@@ -361,9 +309,6 @@ RUN curl --silent --show-error --location --fail --output /usr/local/bin/cloud_s
|
||||
curl --silent --show-error --location --fail --output /usr/local/bin/cosign "https://github.com/sigstore/cosign/releases/download/v${COSIGN_VERSION}/cosign-linux-amd64" && \
|
||||
chmod a=rx /usr/local/bin/cosign && \
|
||||
# Install Bun JavaScript runtime to /usr/local/bin
|
||||
# Ensure unzip is installed right before using it and use multiple mirrors for reliability
|
||||
(apt-get update || (sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.edge.kernel.org/ubuntu/|g' /etc/apt/sources.list && apt-get update)) && \
|
||||
apt-get install -y unzip && \
|
||||
curl --silent --show-error --location --fail "https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/bun-linux-x64.zip" --output /tmp/bun.zip && \
|
||||
unzip -q /tmp/bun.zip -d /tmp && \
|
||||
mv /tmp/bun-linux-x64/bun /usr/local/bin/ && \
|
||||
@@ -371,28 +316,6 @@ RUN curl --silent --show-error --location --fail --output /usr/local/bin/cloud_s
|
||||
rm -rf /tmp/bun.zip /tmp/bun-linux-x64 && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# We use yq during "make deploy" to manually substitute out fields in
|
||||
# our helm values.yaml file. See https://github.com/helm/helm/issues/3141
|
||||
#
|
||||
# TODO: update to 4.x, we can't do this now because it included breaking
|
||||
# changes (yq w doesn't work anymore)
|
||||
# RUN curl --silent --show-error --location "https://github.com/mikefarah/yq/releases/download/v4.9.0/yq_linux_amd64.tar.gz" | \
|
||||
# tar --extract --gzip --directory=/usr/local/bin --file=- ./yq_linux_amd64 && \
|
||||
# mv /usr/local/bin/yq_linux_amd64 /usr/local/bin/yq
|
||||
|
||||
RUN curl --silent --show-error --location --output /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/download/3.3.0/yq_linux_amd64" && \
|
||||
chmod a=rx /usr/local/bin/yq
|
||||
|
||||
# Install GoLand.
|
||||
RUN mkdir --parents /usr/local/goland && \
|
||||
curl --silent --show-error --location "https://download.jetbrains.com/go/goland-2021.2.tar.gz" | \
|
||||
tar --extract --gzip --directory=/usr/local/goland --file=- --strip-components=1 && \
|
||||
ln --symbolic /usr/local/goland/bin/goland.sh /usr/local/bin/goland
|
||||
|
||||
# Install Antlrv4, needed to generate paramlang lexer/parser
|
||||
RUN curl --silent --show-error --location --output /usr/local/lib/antlr-4.9.2-complete.jar "https://www.antlr.org/download/antlr-4.9.2-complete.jar"
|
||||
ENV CLASSPATH="/usr/local/lib/antlr-4.9.2-complete.jar:${PATH}"
|
||||
|
||||
# Add coder user and allow use of docker/sudo
|
||||
RUN useradd coder \
|
||||
--create-home \
|
||||
|
||||
Reference in New Issue
Block a user