mirror of
https://github.com/azaion/detections.git
synced 2026-04-22 22:46:31 +00:00
95 lines
2.0 KiB
Markdown
95 lines
2.0 KiB
Markdown
# Containerization Plan Template
|
|
|
|
Save as `_docs/04_deploy/containerization.md`.
|
|
|
|
---
|
|
|
|
```markdown
|
|
# [System Name] — Containerization
|
|
|
|
## Component Dockerfiles
|
|
|
|
### [Component Name]
|
|
|
|
| Property | Value |
|
|
|----------|-------|
|
|
| Base image | [e.g., mcr.microsoft.com/dotnet/aspnet:8.0-alpine] |
|
|
| Build image | [e.g., mcr.microsoft.com/dotnet/sdk:8.0-alpine] |
|
|
| Stages | [dependency install → build → production] |
|
|
| User | [non-root user name] |
|
|
| Health check | [endpoint and command] |
|
|
| Exposed ports | [port list] |
|
|
| Key build args | [if any] |
|
|
|
|
### [Repeat for each component]
|
|
|
|
## Docker Compose — Local Development
|
|
|
|
```yaml
|
|
# docker-compose.yml structure
|
|
services:
|
|
[component]:
|
|
build: ./[path]
|
|
ports: ["host:container"]
|
|
environment: [reference .env.dev]
|
|
depends_on: [dependencies with health condition]
|
|
healthcheck: [command, interval, timeout, retries]
|
|
|
|
db:
|
|
image: [postgres:version-alpine]
|
|
volumes: [named volume]
|
|
environment: [credentials from .env.dev]
|
|
healthcheck: [pg_isready]
|
|
|
|
volumes:
|
|
[named volumes]
|
|
|
|
networks:
|
|
[shared network]
|
|
```
|
|
|
|
## Docker Compose — Blackbox Tests
|
|
|
|
```yaml
|
|
# docker-compose.test.yml structure
|
|
services:
|
|
[app components under test]
|
|
|
|
test-runner:
|
|
build: ./tests/integration
|
|
depends_on: [app components with health condition]
|
|
environment: [test configuration]
|
|
# Exit code determines test pass/fail
|
|
|
|
db:
|
|
image: [postgres:version-alpine]
|
|
volumes: [seed data mount]
|
|
```
|
|
|
|
Run: `docker compose -f docker-compose.test.yml up --abort-on-container-exit`
|
|
|
|
## Image Tagging Strategy
|
|
|
|
| Context | Tag Format | Example |
|
|
|---------|-----------|---------|
|
|
| CI build | `<registry>/<project>/<component>:<git-sha>` | `ghcr.io/org/api:a1b2c3d` |
|
|
| Release | `<registry>/<project>/<component>:<semver>` | `ghcr.io/org/api:1.2.0` |
|
|
| Local dev | `<component>:latest` | `api:latest` |
|
|
|
|
## .dockerignore
|
|
|
|
```
|
|
.git
|
|
.cursor
|
|
_docs
|
|
_standalone
|
|
node_modules
|
|
**/bin
|
|
**/obj
|
|
**/__pycache__
|
|
*.md
|
|
.env*
|
|
docker-compose*.yml
|
|
```
|
|
```
|