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,639 @@
|
|
|
1
|
+
# MinIO Overlay
|
|
2
|
+
|
|
3
|
+
MinIO S3-compatible object storage for local development and testing of cloud storage applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **MinIO Server** - High-performance S3-compatible object storage
|
|
8
|
+
- **MinIO Console** - Web-based admin interface (port 9001)
|
|
9
|
+
- **MinIO Client (mc)** - Command-line tool for bucket/object management
|
|
10
|
+
- **S3 API compatibility** - Works with AWS SDK and tools
|
|
11
|
+
- **Docker Compose service** - Runs as separate container
|
|
12
|
+
- **Persistent storage** - Data survives container restarts
|
|
13
|
+
- **Health checks** - Ensures service is ready before use
|
|
14
|
+
- **Pre-configured buckets** - Optional default bucket creation
|
|
15
|
+
|
|
16
|
+
## How It Works
|
|
17
|
+
|
|
18
|
+
This overlay adds MinIO as a Docker Compose service, providing a local S3-compatible object storage server. The service is accessible from your development container via the hostname `minio`.
|
|
19
|
+
|
|
20
|
+
**Architecture:**
|
|
21
|
+
|
|
22
|
+
```mermaid
|
|
23
|
+
graph TD
|
|
24
|
+
A[Development Container<br/>Your application code<br/>AWS SDK / mc client<br/>Connects to minio:9000] -->|Docker network devnet| B[MinIO Container<br/>API on port 9000<br/>Console on port 9001<br/>Data volume]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
### Environment Variables
|
|
30
|
+
|
|
31
|
+
The overlay includes a `.env.example` file. Copy it to `.env` and customize:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
cd .devcontainer
|
|
35
|
+
cp .env.example .env
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Default values (.env.example):**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# MinIO Configuration
|
|
42
|
+
MINIO_VERSION=latest
|
|
43
|
+
MINIO_ROOT_USER=minioadmin
|
|
44
|
+
MINIO_ROOT_PASSWORD=minioadmin
|
|
45
|
+
MINIO_API_PORT=9000
|
|
46
|
+
MINIO_CONSOLE_PORT=9001
|
|
47
|
+
|
|
48
|
+
# Default bucket to create (optional)
|
|
49
|
+
MINIO_DEFAULT_BUCKET=my-bucket
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
⚠️ **SECURITY:** Change default credentials for production use. The `.env` file is git-ignored.
|
|
53
|
+
|
|
54
|
+
### Port Configuration
|
|
55
|
+
|
|
56
|
+
Default ports can be changed via the `--port-offset` option when initializing:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Offset all ports by 100
|
|
60
|
+
container-superposition --port-offset 100
|
|
61
|
+
|
|
62
|
+
# MinIO API will be on 9100, Console on 9101
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Connection Information
|
|
66
|
+
|
|
67
|
+
### From Development Container
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# S3 API Endpoint: http://minio:9000
|
|
71
|
+
# Access Key: minioadmin (or value from .env)
|
|
72
|
+
# Secret Key: minioadmin (or value from .env)
|
|
73
|
+
# Region: us-east-1 (default, can be any value)
|
|
74
|
+
|
|
75
|
+
# Environment variables (already set by overlay)
|
|
76
|
+
AWS_ACCESS_KEY_ID=minioadmin
|
|
77
|
+
AWS_SECRET_ACCESS_KEY=minioadmin
|
|
78
|
+
S3_ENDPOINT=http://minio:9000
|
|
79
|
+
AWS_REGION=us-east-1
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### From Host Machine
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# S3 API Endpoint: http://localhost:9000
|
|
86
|
+
# Access Key: minioadmin
|
|
87
|
+
# Secret Key: minioadmin
|
|
88
|
+
# Region: us-east-1
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### MinIO Console (Web UI)
|
|
92
|
+
|
|
93
|
+
Access the web interface from your host machine:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
http://localhost:9001
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Login with:
|
|
100
|
+
|
|
101
|
+
- **Username:** minioadmin
|
|
102
|
+
- **Password:** minioadmin
|
|
103
|
+
|
|
104
|
+
## Common Commands
|
|
105
|
+
|
|
106
|
+
### Using MinIO Client (mc)
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# List configured aliases
|
|
110
|
+
mc alias list
|
|
111
|
+
|
|
112
|
+
# List buckets
|
|
113
|
+
mc ls local
|
|
114
|
+
|
|
115
|
+
# Create bucket
|
|
116
|
+
mc mb local/my-bucket
|
|
117
|
+
|
|
118
|
+
# Remove bucket
|
|
119
|
+
mc rb local/my-bucket
|
|
120
|
+
|
|
121
|
+
# List objects in bucket
|
|
122
|
+
mc ls local/my-bucket
|
|
123
|
+
|
|
124
|
+
# Upload file
|
|
125
|
+
mc cp myfile.txt local/my-bucket/
|
|
126
|
+
|
|
127
|
+
# Download file
|
|
128
|
+
mc cp local/my-bucket/myfile.txt ./downloaded.txt
|
|
129
|
+
|
|
130
|
+
# Remove object
|
|
131
|
+
mc rm local/my-bucket/myfile.txt
|
|
132
|
+
|
|
133
|
+
# Mirror directory to bucket
|
|
134
|
+
mc mirror ./mydir local/my-bucket/mydir
|
|
135
|
+
|
|
136
|
+
# Share object (generate presigned URL)
|
|
137
|
+
mc share download local/my-bucket/myfile.txt --expire 24h
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Bucket Management
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Create bucket with versioning
|
|
144
|
+
mc mb local/my-bucket
|
|
145
|
+
mc version enable local/my-bucket
|
|
146
|
+
|
|
147
|
+
# Set bucket policy (public read)
|
|
148
|
+
mc anonymous set download local/my-bucket
|
|
149
|
+
|
|
150
|
+
# Set bucket policy (private)
|
|
151
|
+
mc anonymous set none local/my-bucket
|
|
152
|
+
|
|
153
|
+
# View bucket policy
|
|
154
|
+
mc anonymous get local/my-bucket
|
|
155
|
+
|
|
156
|
+
# Set bucket quota
|
|
157
|
+
mc quota set local/my-bucket --size 1GB
|
|
158
|
+
|
|
159
|
+
# Get bucket info
|
|
160
|
+
mc stat local/my-bucket
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Object Operations
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Upload with metadata
|
|
167
|
+
mc cp --attr "Content-Type=text/html;Cache-Control=max-age=3600" index.html local/my-bucket/
|
|
168
|
+
|
|
169
|
+
# Copy between buckets
|
|
170
|
+
mc cp local/source-bucket/file.txt local/dest-bucket/
|
|
171
|
+
|
|
172
|
+
# Copy recursively
|
|
173
|
+
mc cp --recursive ./mydir/ local/my-bucket/mydir/
|
|
174
|
+
|
|
175
|
+
# Find objects
|
|
176
|
+
mc find local/my-bucket --name "*.jpg"
|
|
177
|
+
|
|
178
|
+
# Cat object content
|
|
179
|
+
mc cat local/my-bucket/file.txt
|
|
180
|
+
|
|
181
|
+
# Diff between buckets
|
|
182
|
+
mc diff local/bucket1 local/bucket2
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Container Management
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
# Check service status
|
|
189
|
+
docker-compose ps
|
|
190
|
+
|
|
191
|
+
# View MinIO logs
|
|
192
|
+
docker-compose logs -f minio
|
|
193
|
+
|
|
194
|
+
# Restart service
|
|
195
|
+
docker-compose restart minio
|
|
196
|
+
|
|
197
|
+
# Stop service
|
|
198
|
+
docker-compose stop minio
|
|
199
|
+
|
|
200
|
+
# Remove data (WARNING: destroys all data)
|
|
201
|
+
docker-compose down -v
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Application Integration
|
|
205
|
+
|
|
206
|
+
### Node.js (AWS SDK v3)
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# Install AWS SDK
|
|
210
|
+
npm install @aws-sdk/client-s3
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
const {
|
|
215
|
+
S3Client,
|
|
216
|
+
PutObjectCommand,
|
|
217
|
+
GetObjectCommand,
|
|
218
|
+
ListBucketsCommand,
|
|
219
|
+
} = require('@aws-sdk/client-s3');
|
|
220
|
+
const fs = require('fs');
|
|
221
|
+
|
|
222
|
+
// Configure S3 client for MinIO
|
|
223
|
+
const s3Client = new S3Client({
|
|
224
|
+
endpoint: 'http://minio:9000',
|
|
225
|
+
region: 'us-east-1',
|
|
226
|
+
credentials: {
|
|
227
|
+
accessKeyId: 'minioadmin',
|
|
228
|
+
secretAccessKey: 'minioadmin',
|
|
229
|
+
},
|
|
230
|
+
forcePathStyle: true, // Required for MinIO
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
// List buckets
|
|
234
|
+
async function listBuckets() {
|
|
235
|
+
const response = await s3Client.send(new ListBucketsCommand({}));
|
|
236
|
+
console.log(response.Buckets);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Upload file
|
|
240
|
+
async function uploadFile() {
|
|
241
|
+
const fileContent = fs.readFileSync('myfile.txt');
|
|
242
|
+
await s3Client.send(
|
|
243
|
+
new PutObjectCommand({
|
|
244
|
+
Bucket: 'my-bucket',
|
|
245
|
+
Key: 'myfile.txt',
|
|
246
|
+
Body: fileContent,
|
|
247
|
+
})
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Download file
|
|
252
|
+
async function downloadFile() {
|
|
253
|
+
const response = await s3Client.send(
|
|
254
|
+
new GetObjectCommand({
|
|
255
|
+
Bucket: 'my-bucket',
|
|
256
|
+
Key: 'myfile.txt',
|
|
257
|
+
})
|
|
258
|
+
);
|
|
259
|
+
|
|
260
|
+
const stream = response.Body;
|
|
261
|
+
const chunks = [];
|
|
262
|
+
for await (const chunk of stream) {
|
|
263
|
+
chunks.push(chunk);
|
|
264
|
+
}
|
|
265
|
+
const fileContent = Buffer.concat(chunks);
|
|
266
|
+
fs.writeFileSync('downloaded.txt', fileContent);
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Python (boto3)
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Install boto3
|
|
274
|
+
pip install boto3
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
```python
|
|
278
|
+
import boto3
|
|
279
|
+
from botocore.client import Config
|
|
280
|
+
|
|
281
|
+
# Configure S3 client for MinIO
|
|
282
|
+
s3_client = boto3.client(
|
|
283
|
+
's3',
|
|
284
|
+
endpoint_url='http://minio:9000',
|
|
285
|
+
aws_access_key_id='minioadmin',
|
|
286
|
+
aws_secret_access_key='minioadmin',
|
|
287
|
+
config=Config(signature_version='s3v4'),
|
|
288
|
+
region_name='us-east-1'
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
# List buckets
|
|
292
|
+
response = s3_client.list_buckets()
|
|
293
|
+
for bucket in response['Buckets']:
|
|
294
|
+
print(bucket['Name'])
|
|
295
|
+
|
|
296
|
+
# Upload file
|
|
297
|
+
s3_client.upload_file('myfile.txt', 'my-bucket', 'myfile.txt')
|
|
298
|
+
|
|
299
|
+
# Download file
|
|
300
|
+
s3_client.download_file('my-bucket', 'myfile.txt', 'downloaded.txt')
|
|
301
|
+
|
|
302
|
+
# Upload from string
|
|
303
|
+
s3_client.put_object(
|
|
304
|
+
Bucket='my-bucket',
|
|
305
|
+
Key='text.txt',
|
|
306
|
+
Body='Hello, MinIO!'.encode('utf-8')
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
# Download to string
|
|
310
|
+
response = s3_client.get_object(Bucket='my-bucket', Key='text.txt')
|
|
311
|
+
content = response['Body'].read().decode('utf-8')
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### .NET
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
# Install AWS SDK
|
|
318
|
+
dotnet add package AWSSDK.S3
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
```csharp
|
|
322
|
+
using Amazon.S3;
|
|
323
|
+
using Amazon.S3.Model;
|
|
324
|
+
using Amazon.Runtime;
|
|
325
|
+
|
|
326
|
+
var config = new AmazonS3Config
|
|
327
|
+
{
|
|
328
|
+
ServiceURL = "http://minio:9000",
|
|
329
|
+
ForcePathStyle = true,
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
var credentials = new BasicAWSCredentials("minioadmin", "minioadmin");
|
|
333
|
+
var s3Client = new AmazonS3Client(credentials, config);
|
|
334
|
+
|
|
335
|
+
// List buckets
|
|
336
|
+
var bucketsResponse = await s3Client.ListBucketsAsync();
|
|
337
|
+
foreach (var bucket in bucketsResponse.Buckets)
|
|
338
|
+
{
|
|
339
|
+
Console.WriteLine(bucket.BucketName);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Upload file
|
|
343
|
+
await s3Client.PutObjectAsync(new PutObjectRequest
|
|
344
|
+
{
|
|
345
|
+
BucketName = "my-bucket",
|
|
346
|
+
Key = "myfile.txt",
|
|
347
|
+
FilePath = "myfile.txt",
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
// Download file
|
|
351
|
+
await s3Client.GetObjectAsync(new GetObjectRequest
|
|
352
|
+
{
|
|
353
|
+
BucketName = "my-bucket",
|
|
354
|
+
Key = "myfile.txt",
|
|
355
|
+
}, "downloaded.txt");
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### Go
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
# Install MinIO Go SDK
|
|
362
|
+
go get github.com/minio/minio-go/v7
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
```go
|
|
366
|
+
package main
|
|
367
|
+
|
|
368
|
+
import (
|
|
369
|
+
"context"
|
|
370
|
+
"log"
|
|
371
|
+
"github.com/minio/minio-go/v7"
|
|
372
|
+
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
func main() {
|
|
376
|
+
ctx := context.Background()
|
|
377
|
+
|
|
378
|
+
// Initialize MinIO client
|
|
379
|
+
minioClient, err := minio.New("minio:9000", &minio.Options{
|
|
380
|
+
Creds: credentials.NewStaticV4("minioadmin", "minioadmin", ""),
|
|
381
|
+
Secure: false,
|
|
382
|
+
})
|
|
383
|
+
if err != nil {
|
|
384
|
+
log.Fatalln(err)
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// List buckets
|
|
388
|
+
buckets, _ := minioClient.ListBuckets(ctx)
|
|
389
|
+
for _, bucket := range buckets {
|
|
390
|
+
log.Println(bucket.Name)
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// Upload file
|
|
394
|
+
_, err = minioClient.FPutObject(ctx, "my-bucket", "myfile.txt", "myfile.txt", minio.PutObjectOptions{})
|
|
395
|
+
if err != nil {
|
|
396
|
+
log.Fatalln(err)
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// Download file
|
|
400
|
+
err = minioClient.FGetObject(ctx, "my-bucket", "myfile.txt", "downloaded.txt", minio.GetObjectOptions{})
|
|
401
|
+
if err != nil {
|
|
402
|
+
log.Fatalln(err)
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
## Use Cases
|
|
408
|
+
|
|
409
|
+
- **Local S3 development** - Test S3 code without AWS costs
|
|
410
|
+
- **File uploads** - Store user-uploaded files (images, documents, media)
|
|
411
|
+
- **Backup storage** - Backup databases and application data
|
|
412
|
+
- **Static asset hosting** - Serve images, videos, downloads
|
|
413
|
+
- **Multi-cloud development** - S3-compatible API works with MinIO, AWS, GCS, etc.
|
|
414
|
+
- **CI/CD testing** - Test storage code in pipelines
|
|
415
|
+
- **Data lakes** - Store large datasets for analysis
|
|
416
|
+
- **Microservices storage** - Shared object storage for distributed apps
|
|
417
|
+
|
|
418
|
+
**Integrates well with:**
|
|
419
|
+
|
|
420
|
+
- Node.js, Python, .NET, Go (AWS SDK support)
|
|
421
|
+
- AWS CLI (aws-cli overlay) - Use AWS CLI with MinIO
|
|
422
|
+
- Any S3-compatible tool or library
|
|
423
|
+
|
|
424
|
+
## Troubleshooting
|
|
425
|
+
|
|
426
|
+
### Issue: Cannot connect to MinIO
|
|
427
|
+
|
|
428
|
+
**Symptoms:**
|
|
429
|
+
|
|
430
|
+
- Connection refused errors
|
|
431
|
+
- Timeout when connecting
|
|
432
|
+
|
|
433
|
+
**Solution:**
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
# Check if service is running
|
|
437
|
+
docker-compose ps
|
|
438
|
+
|
|
439
|
+
# Check MinIO logs
|
|
440
|
+
docker-compose logs minio
|
|
441
|
+
|
|
442
|
+
# Wait for health check to pass
|
|
443
|
+
docker-compose ps | grep minio
|
|
444
|
+
# Look for "healthy" status
|
|
445
|
+
|
|
446
|
+
# Test connection
|
|
447
|
+
curl http://minio:9000/minio/health/live
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
### Issue: Access Denied
|
|
451
|
+
|
|
452
|
+
**Symptoms:**
|
|
453
|
+
|
|
454
|
+
- "Access Denied" error
|
|
455
|
+
- Authentication failures
|
|
456
|
+
|
|
457
|
+
**Solution:**
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
# Verify credentials in .env file
|
|
461
|
+
cat .devcontainer/.env
|
|
462
|
+
|
|
463
|
+
# Ensure credentials match in your code
|
|
464
|
+
# Access Key: minioadmin
|
|
465
|
+
# Secret Key: minioadmin
|
|
466
|
+
|
|
467
|
+
# Reconfigure mc alias
|
|
468
|
+
mc alias set local http://minio:9000 minioadmin minioadmin
|
|
469
|
+
|
|
470
|
+
# Check bucket policy
|
|
471
|
+
mc anonymous get local/my-bucket
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Issue: Bucket not found
|
|
475
|
+
|
|
476
|
+
**Symptoms:**
|
|
477
|
+
|
|
478
|
+
- "The specified bucket does not exist"
|
|
479
|
+
|
|
480
|
+
**Solution:**
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
# Create bucket
|
|
484
|
+
mc mb local/my-bucket
|
|
485
|
+
|
|
486
|
+
# List existing buckets
|
|
487
|
+
mc ls local
|
|
488
|
+
|
|
489
|
+
# Check if MINIO_DEFAULT_BUCKET was created during setup
|
|
490
|
+
mc ls local | grep my-bucket
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
### Issue: MinIO Console not accessible
|
|
494
|
+
|
|
495
|
+
**Symptoms:**
|
|
496
|
+
|
|
497
|
+
- Cannot access http://localhost:9001
|
|
498
|
+
- Page not loading
|
|
499
|
+
|
|
500
|
+
**Solution:**
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
# Check MinIO logs
|
|
504
|
+
docker-compose logs minio
|
|
505
|
+
|
|
506
|
+
# Verify MinIO is healthy first
|
|
507
|
+
docker-compose ps minio
|
|
508
|
+
|
|
509
|
+
# Restart MinIO
|
|
510
|
+
docker-compose restart minio
|
|
511
|
+
|
|
512
|
+
# Check port forwarding in VS Code
|
|
513
|
+
# Dev Containers: Forward Ports... (port 9001)
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Issue: Data not persisting
|
|
517
|
+
|
|
518
|
+
**Symptoms:**
|
|
519
|
+
|
|
520
|
+
- Buckets/objects lost after container restart
|
|
521
|
+
|
|
522
|
+
**Solution:**
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
# Verify volumes exist
|
|
526
|
+
docker volume ls | grep minio
|
|
527
|
+
|
|
528
|
+
# Check volume mounts in docker-compose.yml
|
|
529
|
+
docker-compose config
|
|
530
|
+
|
|
531
|
+
# Don't use 'docker-compose down -v' unless you want to delete data
|
|
532
|
+
# Use 'docker-compose down' or 'docker-compose stop' instead
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### Issue: Slow performance
|
|
536
|
+
|
|
537
|
+
**Symptoms:**
|
|
538
|
+
|
|
539
|
+
- Slow uploads/downloads
|
|
540
|
+
|
|
541
|
+
**Solution:**
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
# MinIO is fast locally - check:
|
|
545
|
+
# 1. File size (large files take time)
|
|
546
|
+
# 2. Network (should be Docker network, not internet)
|
|
547
|
+
# 3. Disk I/O (SSD recommended)
|
|
548
|
+
|
|
549
|
+
# Use mc stat to check object info
|
|
550
|
+
mc stat local/my-bucket/myfile.txt
|
|
551
|
+
|
|
552
|
+
# Check MinIO metrics
|
|
553
|
+
curl http://minio:9000/minio/v2/metrics/cluster
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
## Security Considerations
|
|
557
|
+
|
|
558
|
+
⚠️ **Development-only defaults:**
|
|
559
|
+
|
|
560
|
+
- Default credentials (`minioadmin/minioadmin`) are publicly known
|
|
561
|
+
- MinIO is exposed on host port (accessible from host machine)
|
|
562
|
+
- No TLS/SSL encryption by default
|
|
563
|
+
|
|
564
|
+
**For production:**
|
|
565
|
+
|
|
566
|
+
1. **Change credentials:**
|
|
567
|
+
|
|
568
|
+
```bash
|
|
569
|
+
# Use strong passwords
|
|
570
|
+
MINIO_ROOT_USER=<strong-username>
|
|
571
|
+
MINIO_ROOT_PASSWORD=<strong-password>
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
2. **Create application-specific users:**
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
# Don't use root user for applications
|
|
578
|
+
mc admin user add local myapp <strong-password>
|
|
579
|
+
mc admin policy attach local readwrite --user myapp
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
3. **Enable TLS:**
|
|
583
|
+
|
|
584
|
+
```yaml
|
|
585
|
+
# Generate certificates and mount in docker-compose.yml
|
|
586
|
+
# See: https://min.io/docs/minio/linux/operations/network-encryption.html
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
4. **Restrict bucket access:**
|
|
590
|
+
|
|
591
|
+
```bash
|
|
592
|
+
# Set private bucket policy
|
|
593
|
+
mc anonymous set none local/my-bucket
|
|
594
|
+
|
|
595
|
+
# Use IAM policies for fine-grained access
|
|
596
|
+
mc admin policy create local mypolicy policy.json
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
5. **Enable versioning and retention:**
|
|
600
|
+
```bash
|
|
601
|
+
# Protect against accidental deletion
|
|
602
|
+
mc version enable local/my-bucket
|
|
603
|
+
mc retention set --default GOVERNANCE 30d local/my-bucket
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
## Performance Tips
|
|
607
|
+
|
|
608
|
+
1. **Use multipart uploads** for large files (>5MB)
|
|
609
|
+
2. **Enable bucket versioning** for data protection
|
|
610
|
+
3. **Set appropriate content types** for better browser handling
|
|
611
|
+
4. **Use presigned URLs** for temporary access instead of public buckets
|
|
612
|
+
5. **Monitor with MinIO Console** - view metrics, storage usage
|
|
613
|
+
|
|
614
|
+
## Related Overlays
|
|
615
|
+
|
|
616
|
+
- **aws-cli** - AWS CLI works with MinIO (configure with `--endpoint-url`)
|
|
617
|
+
- **nodejs** - Node.js with AWS SDK
|
|
618
|
+
- **python** - Python with boto3
|
|
619
|
+
- **dotnet** - .NET with AWSSDK.S3
|
|
620
|
+
- **grafana** - Visualize MinIO metrics (Prometheus endpoint available)
|
|
621
|
+
|
|
622
|
+
## Additional Resources
|
|
623
|
+
|
|
624
|
+
- [Official MinIO Documentation](https://min.io/docs/minio/linux/index.html)
|
|
625
|
+
- [MinIO Client Guide](https://min.io/docs/minio/linux/reference/minio-mc.html)
|
|
626
|
+
- [AWS SDK for JavaScript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)
|
|
627
|
+
- [boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
|
|
628
|
+
- [S3 API Reference](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html)
|
|
629
|
+
|
|
630
|
+
## Notes
|
|
631
|
+
|
|
632
|
+
- MinIO uses the hostname `minio` (the service name) for container-to-container communication
|
|
633
|
+
- Data is persisted in a Docker volume (`minio-data`)
|
|
634
|
+
- MinIO Console provides web UI for bucket/object management
|
|
635
|
+
- **Massive ROI** - Local S3 development comes up constantly in modern applications
|
|
636
|
+
- S3-compatible API means code works with AWS, GCS, and other cloud providers
|
|
637
|
+
- MinIO Client (mc) is installed automatically during setup
|
|
638
|
+
- Use `forcePathStyle: true` in AWS SDK configuration for MinIO compatibility
|
|
639
|
+
- Default bucket creation is optional via `MINIO_DEFAULT_BUCKET` environment variable
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"features": {
|
|
4
|
+
"./features/cross-distro-packages": {
|
|
5
|
+
"apt": "wget",
|
|
6
|
+
"apk": "wget"
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"runServices": ["minio"],
|
|
10
|
+
"forwardPorts": [9000, 9001],
|
|
11
|
+
"portsAttributes": {
|
|
12
|
+
"9000": {
|
|
13
|
+
"label": "MinIO API",
|
|
14
|
+
"onAutoForward": "notify"
|
|
15
|
+
},
|
|
16
|
+
"9001": {
|
|
17
|
+
"label": "MinIO Console",
|
|
18
|
+
"onAutoForward": "openBrowser"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"remoteEnv": {
|
|
22
|
+
"MINIO_ENDPOINT": "minio:9000",
|
|
23
|
+
"MINIO_ROOT_USER": "minioadmin",
|
|
24
|
+
"MINIO_ROOT_PASSWORD": "minioadmin",
|
|
25
|
+
"AWS_ACCESS_KEY_ID": "minioadmin",
|
|
26
|
+
"AWS_SECRET_ACCESS_KEY": "minioadmin",
|
|
27
|
+
"AWS_REGION": "us-east-1",
|
|
28
|
+
"S3_ENDPOINT": "http://minio:9000"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
minio:
|
|
5
|
+
image: minio/minio:${MINIO_VERSION:-latest}
|
|
6
|
+
restart: unless-stopped
|
|
7
|
+
command: server /data --console-address ":9001"
|
|
8
|
+
volumes:
|
|
9
|
+
- minio-data:/data
|
|
10
|
+
environment:
|
|
11
|
+
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
|
12
|
+
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
|
|
13
|
+
ports:
|
|
14
|
+
- '${MINIO_API_PORT:-9000}:9000'
|
|
15
|
+
- '${MINIO_CONSOLE_PORT:-9001}:9001'
|
|
16
|
+
networks:
|
|
17
|
+
- devnet
|
|
18
|
+
healthcheck:
|
|
19
|
+
test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']
|
|
20
|
+
interval: 10s
|
|
21
|
+
timeout: 5s
|
|
22
|
+
retries: 5
|
|
23
|
+
|
|
24
|
+
volumes:
|
|
25
|
+
minio-data:
|
|
26
|
+
|
|
27
|
+
networks:
|
|
28
|
+
devnet:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
id: minio
|
|
2
|
+
name: MinIO
|
|
3
|
+
description: S3-compatible object storage with web console
|
|
4
|
+
category: database
|
|
5
|
+
supports:
|
|
6
|
+
- compose
|
|
7
|
+
requires: []
|
|
8
|
+
suggests: []
|
|
9
|
+
conflicts: []
|
|
10
|
+
tags:
|
|
11
|
+
- database
|
|
12
|
+
- storage
|
|
13
|
+
- s3
|
|
14
|
+
- object-storage
|
|
15
|
+
- minio
|
|
16
|
+
ports:
|
|
17
|
+
- 9000
|
|
18
|
+
- 9001
|