From 6fbf8c3cc53519b0a971a9f25cc4b935dc8a4ac4 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Tue, 15 Nov 2022 09:19:29 +1100 Subject: [PATCH] add dev-container allow docker-in-docker --- .devcontainer/Dockerfile | 11 +++++++ .devcontainer/devcontainer.json | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..d9cbe09 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/devcontainers/go:bullseye + +RUN apt-get update && apt-get install -y \ + curl \ + git \ + && rm -rf /var/lib/apt/lists/* + +RUN go install mvdan.cc/gofumpt@latest +ENV PATH="/root/go/bin:${PATH}" +RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.50.0 +RUN golangci-lint --version diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..e967508 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,54 @@ +{ + "name": "Docker in Docker", + "build": { + "dockerfile": "./Dockerfile", + "context": "." + }, + "features": { + "ghcr.io/devcontainers/features/common-utils:1": { + "installZsh": "true", + "upgradePackages": "false", + "uid": "1000", + "gid": "1000", + "installOhMyZsh": "true", + "nonFreePackages": "true" + }, + "ghcr.io/devcontainers/features/docker-from-docker:1": { + "version": "latest", + "enableNonRootDocker": "true", + "moby": "true" + }, + "ghcr.io/devcontainers/features/git:1": {}, + "ghcr.io/devcontainers/features/go:1": {} + }, + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "settings": { + "go.toolsManagement.checkForUpdates": "local", + "go.useLanguageServer": true, + "go.gopath": "~/go", + "[go]": { + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.organizeImports": true + } + }, + "go.lintTool": "golangci-lint", + "gopls": { + "formatting.gofumpt": true, + "usePlaceholders": false // add parameter placeholders when completing a function + }, + "files.eol": "\n" + }, + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "golang.Go" + ] + } + } + // TODO: make this work. + // "postStartCommand": "echo \"alias gr=\\\"go run /workspaces/lazydocker/main.go\\\"\" >> ~/.zhsrc" +}