container-superposition 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Go Overlay
|
|
2
|
+
|
|
3
|
+
Adds Go latest stable version with tooling for cloud-native development, microservices, and CLI applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Go** - Latest stable version from official Go team
|
|
8
|
+
- **gopls** - Official Go language server for IntelliSense
|
|
9
|
+
- **delve** - Powerful Go debugger
|
|
10
|
+
- **golangci-lint** - Fast linters aggregator
|
|
11
|
+
- **VS Code Extension:** Go (golang.go) - Complete Go development experience
|
|
12
|
+
- **Automatic module management** - Runs `go mod download` on container creation
|
|
13
|
+
|
|
14
|
+
## How It Works
|
|
15
|
+
|
|
16
|
+
This overlay uses the official devcontainers Go feature to install the latest stable Go version. The setup script installs essential Go development tools including gopls (language server), delve (debugger), and golangci-lint (linter).
|
|
17
|
+
|
|
18
|
+
**Installation method:**
|
|
19
|
+
|
|
20
|
+
- Go runtime via official devcontainer feature
|
|
21
|
+
- Development tools via `go install`
|
|
22
|
+
- Tools accessible in $GOPATH/bin
|
|
23
|
+
|
|
24
|
+
## Common Commands
|
|
25
|
+
|
|
26
|
+
### Project Initialization
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Create new module
|
|
30
|
+
go mod init github.com/username/project
|
|
31
|
+
|
|
32
|
+
# Add dependency
|
|
33
|
+
go get github.com/gin-gonic/gin@latest
|
|
34
|
+
|
|
35
|
+
# Update dependencies
|
|
36
|
+
go get -u ./...
|
|
37
|
+
|
|
38
|
+
# Tidy modules (remove unused)
|
|
39
|
+
go mod tidy
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Building and Running
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Run application
|
|
46
|
+
go run main.go
|
|
47
|
+
|
|
48
|
+
# Build binary
|
|
49
|
+
go build -o myapp
|
|
50
|
+
|
|
51
|
+
# Build with optimizations
|
|
52
|
+
go build -ldflags="-s -w" -o myapp
|
|
53
|
+
|
|
54
|
+
# Cross-compile for Linux
|
|
55
|
+
GOOS=linux GOARCH=amd64 go build -o myapp-linux
|
|
56
|
+
|
|
57
|
+
# Install binary to $GOPATH/bin
|
|
58
|
+
go install
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Testing
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Run tests
|
|
65
|
+
go test ./...
|
|
66
|
+
|
|
67
|
+
# Run with coverage
|
|
68
|
+
go test -cover ./...
|
|
69
|
+
|
|
70
|
+
# Generate coverage report
|
|
71
|
+
go test -coverprofile=coverage.out ./...
|
|
72
|
+
go tool cover -html=coverage.out
|
|
73
|
+
|
|
74
|
+
# Run benchmarks
|
|
75
|
+
go test -bench=. ./...
|
|
76
|
+
|
|
77
|
+
# Verbose output
|
|
78
|
+
go test -v ./...
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Code Quality
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Format code
|
|
85
|
+
go fmt ./...
|
|
86
|
+
# or with gofumpt (stricter)
|
|
87
|
+
gofumpt -l -w .
|
|
88
|
+
|
|
89
|
+
# Lint with golangci-lint
|
|
90
|
+
golangci-lint run
|
|
91
|
+
|
|
92
|
+
# Vet (detect suspicious code)
|
|
93
|
+
go vet ./...
|
|
94
|
+
|
|
95
|
+
# Static analysis with staticcheck
|
|
96
|
+
staticcheck ./...
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Dependency Management
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# List dependencies
|
|
103
|
+
go list -m all
|
|
104
|
+
|
|
105
|
+
# View dependency graph
|
|
106
|
+
go mod graph
|
|
107
|
+
|
|
108
|
+
# Vendor dependencies (optional)
|
|
109
|
+
go mod vendor
|
|
110
|
+
|
|
111
|
+
# Check for updates
|
|
112
|
+
go list -u -m all
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Use Cases
|
|
116
|
+
|
|
117
|
+
- **Microservices** - Cloud-native services with gRPC or REST APIs
|
|
118
|
+
- **CLI tools** - Command-line applications (Cobra, urfave/cli)
|
|
119
|
+
- **Cloud infrastructure** - Kubernetes operators, Terraform providers
|
|
120
|
+
- **Web servers** - HTTP APIs (Gin, Echo, Fiber)
|
|
121
|
+
- **Systems programming** - High-performance networked services
|
|
122
|
+
- **DevOps tools** - Build tools, deployment automation
|
|
123
|
+
|
|
124
|
+
**Integrates well with:**
|
|
125
|
+
|
|
126
|
+
- `postgres`, `redis`, `mysql` - Database drivers (pq, go-redis, mysql)
|
|
127
|
+
- `docker-sock` - Docker SDK for Go
|
|
128
|
+
- `kubectl-helm` - Kubernetes client libraries
|
|
129
|
+
- `otel-collector`, `jaeger` - OpenTelemetry Go SDK
|
|
130
|
+
- `prometheus` - Prometheus Go client
|
|
131
|
+
|
|
132
|
+
## Configuration
|
|
133
|
+
|
|
134
|
+
### Go Version
|
|
135
|
+
|
|
136
|
+
The overlay installs the **latest stable** Go version. To use a specific version, modify `devcontainer.patch.json`:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"features": {
|
|
141
|
+
"ghcr.io/devcontainers/features/go:1": {
|
|
142
|
+
"version": "1.21" // Specify exact version
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### golangci-lint Configuration
|
|
149
|
+
|
|
150
|
+
Create `.golangci.yml` in project root:
|
|
151
|
+
|
|
152
|
+
```yaml
|
|
153
|
+
linters:
|
|
154
|
+
enable:
|
|
155
|
+
- gofmt
|
|
156
|
+
- gofumpt
|
|
157
|
+
- govet
|
|
158
|
+
- staticcheck
|
|
159
|
+
- errcheck
|
|
160
|
+
- gosimple
|
|
161
|
+
- unused
|
|
162
|
+
|
|
163
|
+
linters-settings:
|
|
164
|
+
gofumpt:
|
|
165
|
+
extra-rules: true
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Application Integration
|
|
169
|
+
|
|
170
|
+
### HTTP Server with Gin
|
|
171
|
+
|
|
172
|
+
```go
|
|
173
|
+
package main
|
|
174
|
+
|
|
175
|
+
import (
|
|
176
|
+
"github.com/gin-gonic/gin"
|
|
177
|
+
"net/http"
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
func main() {
|
|
181
|
+
r := gin.Default()
|
|
182
|
+
|
|
183
|
+
r.GET("/", func(c *gin.Context) {
|
|
184
|
+
c.JSON(http.StatusOK, gin.H{
|
|
185
|
+
"message": "Hello from Go!",
|
|
186
|
+
})
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
r.Run(":8080") // Listen on port 8080
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Run:**
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
go mod init myapp
|
|
197
|
+
go get github.com/gin-gonic/gin
|
|
198
|
+
go run main.go
|
|
199
|
+
# Access at http://localhost:8080
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### PostgreSQL Integration
|
|
203
|
+
|
|
204
|
+
```go
|
|
205
|
+
package main
|
|
206
|
+
|
|
207
|
+
import (
|
|
208
|
+
"database/sql"
|
|
209
|
+
_ "github.com/lib/pq"
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
func main() {
|
|
213
|
+
connStr := "host=postgres port=5432 user=postgres password=postgres dbname=mydb sslmode=disable"
|
|
214
|
+
db, err := sql.Open("postgres", connStr)
|
|
215
|
+
if err != nil {
|
|
216
|
+
panic(err)
|
|
217
|
+
}
|
|
218
|
+
defer db.Close()
|
|
219
|
+
|
|
220
|
+
// Use database
|
|
221
|
+
rows, err := db.Query("SELECT * FROM users")
|
|
222
|
+
// ...
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Troubleshooting
|
|
227
|
+
|
|
228
|
+
### Issue: gopls not found
|
|
229
|
+
|
|
230
|
+
**Symptoms:**
|
|
231
|
+
|
|
232
|
+
- IntelliSense not working
|
|
233
|
+
- "gopls not found" error
|
|
234
|
+
|
|
235
|
+
**Solution:**
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Install gopls manually
|
|
239
|
+
go install golang.org/x/tools/gopls@latest
|
|
240
|
+
|
|
241
|
+
# Verify installation
|
|
242
|
+
gopls version
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Issue: Module not found
|
|
246
|
+
|
|
247
|
+
**Symptoms:**
|
|
248
|
+
|
|
249
|
+
- `cannot find module` errors
|
|
250
|
+
- Import errors
|
|
251
|
+
|
|
252
|
+
**Solution:**
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# Initialize module if not done
|
|
256
|
+
go mod init github.com/yourname/project
|
|
257
|
+
|
|
258
|
+
# Download dependencies
|
|
259
|
+
go mod download
|
|
260
|
+
|
|
261
|
+
# Tidy dependencies
|
|
262
|
+
go mod tidy
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Issue: GOPATH/GOROOT issues
|
|
266
|
+
|
|
267
|
+
**Solution:**
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Check environment
|
|
271
|
+
go env GOPATH
|
|
272
|
+
go env GOROOT
|
|
273
|
+
|
|
274
|
+
# Should output:
|
|
275
|
+
# GOPATH=/go
|
|
276
|
+
# GOROOT=/usr/local/go
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## References
|
|
280
|
+
|
|
281
|
+
- [Official Go Documentation](https://go.dev/doc/) - Complete Go documentation
|
|
282
|
+
- [Go by Example](https://gobyexample.com/) - Hands-on introduction
|
|
283
|
+
- [Effective Go](https://go.dev/doc/effective_go) - Best practices
|
|
284
|
+
- [Go Extension for VS Code](https://marketplace.visualstudio.com/items?itemName=golang.Go)
|
|
285
|
+
- [golangci-lint](https://golangci-lint.run/) - Linters aggregator
|
|
286
|
+
|
|
287
|
+
**Related Overlays:**
|
|
288
|
+
|
|
289
|
+
- `postgres` - PostgreSQL database (lib/pq driver)
|
|
290
|
+
- `redis` - Redis cache (go-redis library)
|
|
291
|
+
- `docker-sock` - Docker SDK for Go
|
|
292
|
+
- `kubectl-helm` - Kubernetes client-go
|
|
293
|
+
- `prometheus` - Prometheus Go client
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"features": {
|
|
4
|
+
"./features/cross-distro-packages": {
|
|
5
|
+
"apt": "build-essential",
|
|
6
|
+
"apk": "build-base"
|
|
7
|
+
},
|
|
8
|
+
"ghcr.io/devcontainers/features/go:1": {
|
|
9
|
+
"version": "latest"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"customizations": {
|
|
13
|
+
"vscode": {
|
|
14
|
+
"extensions": ["golang.go"],
|
|
15
|
+
"settings": {
|
|
16
|
+
"go.toolsManagement.autoUpdate": true,
|
|
17
|
+
"[go]": {
|
|
18
|
+
"editor.formatOnSave": true,
|
|
19
|
+
"editor.codeActionsOnSave": {
|
|
20
|
+
"source.organizeImports": "explicit"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"go.lintTool": "golangci-lint",
|
|
24
|
+
"go.lintOnSave": "package"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"remoteEnv": {
|
|
29
|
+
"PATH": "/go/bin:/usr/local/go/bin:${containerEnv:PATH}",
|
|
30
|
+
"GOPATH": "/go"
|
|
31
|
+
},
|
|
32
|
+
"forwardPorts": [8080, 8081],
|
|
33
|
+
"portsAttributes": {
|
|
34
|
+
"8080": {
|
|
35
|
+
"label": "Web Server",
|
|
36
|
+
"onAutoForward": "openBrowser"
|
|
37
|
+
},
|
|
38
|
+
"8081": {
|
|
39
|
+
"label": "gRPC/API",
|
|
40
|
+
"onAutoForward": "notify"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Go setup script - Install Go tools and verify installation
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔧 Setting up Go development environment..."
|
|
7
|
+
|
|
8
|
+
# Install common Go tools
|
|
9
|
+
echo "📦 Installing Go development tools..."
|
|
10
|
+
|
|
11
|
+
# gopls (Language Server)
|
|
12
|
+
go install golang.org/x/tools/gopls@latest || echo "⚠️ gopls installation failed"
|
|
13
|
+
|
|
14
|
+
# delve (Debugger)
|
|
15
|
+
go install github.com/go-delve/delve/cmd/dlv@latest || echo "⚠️ delve installation failed"
|
|
16
|
+
|
|
17
|
+
# golangci-lint (Linter) - install via go install for security
|
|
18
|
+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest || echo "⚠️ golangci-lint installation failed"
|
|
19
|
+
|
|
20
|
+
# gofumpt (Formatter)
|
|
21
|
+
go install mvdan.cc/gofumpt@latest || echo "⚠️ gofumpt installation failed"
|
|
22
|
+
|
|
23
|
+
# staticcheck (Static analyzer)
|
|
24
|
+
go install honnef.co/go/tools/cmd/staticcheck@latest || echo "⚠️ staticcheck installation failed"
|
|
25
|
+
|
|
26
|
+
# Install project dependencies if go.mod exists
|
|
27
|
+
if [ -f "go.mod" ]; then
|
|
28
|
+
echo "📦 Go module detected, downloading dependencies..."
|
|
29
|
+
go mod download || echo "⚠️ go mod download failed"
|
|
30
|
+
go mod tidy || echo "⚠️ go mod tidy failed"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
echo "✓ Go setup complete"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Verification script for Go overlay
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔍 Verifying Go overlay..."
|
|
7
|
+
echo ""
|
|
8
|
+
|
|
9
|
+
# Check Go is installed
|
|
10
|
+
echo "1️⃣ Checking Go..."
|
|
11
|
+
if command -v go &> /dev/null; then
|
|
12
|
+
go version
|
|
13
|
+
echo " ✅ Go found"
|
|
14
|
+
else
|
|
15
|
+
echo " ❌ Go not found"
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Check gopls (Language Server)
|
|
20
|
+
echo ""
|
|
21
|
+
echo "2️⃣ Checking gopls..."
|
|
22
|
+
if command -v gopls &> /dev/null; then
|
|
23
|
+
gopls version
|
|
24
|
+
echo " ✅ gopls found"
|
|
25
|
+
else
|
|
26
|
+
echo " ⚠️ gopls not found (will be installed on first use)"
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Check delve (Debugger)
|
|
30
|
+
echo ""
|
|
31
|
+
echo "3️⃣ Checking delve..."
|
|
32
|
+
if command -v dlv &> /dev/null; then
|
|
33
|
+
dlv version
|
|
34
|
+
echo " ✅ delve found"
|
|
35
|
+
else
|
|
36
|
+
echo " ⚠️ delve not found (will be installed on first use)"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
echo ""
|
|
40
|
+
echo "✅ Go overlay verification complete"
|