devcontainer: Use a separate devcontainer target

Use a separate `devcontainer` Dockerfile target, this allows to include
the `gopls` in the devcontainer so it doesn't have to be installed by
the Go vscode extension.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
Paweł Gronowski 2024-03-01 14:51:18 +01:00
parent 12dea3fa9e
commit eef352b565
No known key found for this signature in database
GPG key ID: B85EFCFE26DEF92A
2 changed files with 12 additions and 1 deletions

View file

@ -3,7 +3,7 @@
"build": { "build": {
"context": "..", "context": "..",
"dockerfile": "../Dockerfile", "dockerfile": "../Dockerfile",
"target": "dev" "target": "devcontainer"
}, },
"workspaceFolder": "/go/src/github.com/docker/docker", "workspaceFolder": "/go/src/github.com/docker/docker",
"workspaceMount": "source=${localWorkspaceFolder},target=/go/src/github.com/docker/docker,type=bind,consistency=cached", "workspaceMount": "source=${localWorkspaceFolder},target=/go/src/github.com/docker/docker,type=bind,consistency=cached",

View file

@ -251,6 +251,12 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
GOBIN=/build/ GO111MODULE=on go install "mvdan.cc/sh/v3/cmd/shfmt@${SHFMT_VERSION}" \ GOBIN=/build/ GO111MODULE=on go install "mvdan.cc/sh/v3/cmd/shfmt@${SHFMT_VERSION}" \
&& /build/shfmt --version && /build/shfmt --version
FROM base AS gopls
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/go/pkg/mod \
GOBIN=/build/ GO111MODULE=on go install "golang.org/x/tools/gopls@latest" \
&& /build/gopls version
FROM base AS dockercli FROM base AS dockercli
WORKDIR /go/src/github.com/docker/cli WORKDIR /go/src/github.com/docker/cli
ARG DOCKERCLI_REPOSITORY ARG DOCKERCLI_REPOSITORY
@ -655,6 +661,11 @@ RUN <<EOT
docker-proxy --version docker-proxy --version
EOT EOT
# devcontainer is a stage used by .devcontainer/devcontainer.json
FROM dev-base AS devcontainer
COPY --link . .
COPY --link --from=gopls /build/ /usr/local/bin/
# usage: # usage:
# > make shell # > make shell
# > SYSTEMD=true make shell # > SYSTEMD=true make shell