docker

SKILL.md

Docker Skill

VanDaemon uses a multi-container architecture with separate API and Web containers for local development, plus a combined single-container deployment for Fly.io. The API runs on .NET 10, the Web frontend uses nginx to serve Blazor WASM static files and proxy API/WebSocket requests. Data persists via Docker volumes for JSON file storage.

Quick Start

Start Development Environment

# From solution root
docker compose up -d

# View logs
docker compose logs -f

# Rebuild after code changes
docker compose up --build

Access Points

Service URL Purpose
Web UI http://localhost:8080 Blazor WASM frontend
API http://localhost:5000 REST API + Swagger
Health http://localhost:5000/health Container health check
SignalR ws://localhost:5000/hubs/telemetry Real-time updates

Key Concepts

Concept Usage Example
Multi-stage builds Minimize image size FROM sdk AS buildFROM aspnet AS final
Health checks Container orchestration HEALTHCHECK CMD curl /health
Volume mounts Persist JSON data api-data:/app/data
Bridge network Inter-container comms http://api:80 not localhost:5000
Supervisor Multi-process container Combined nginx + API for Fly.io

Common Patterns

Container Networking

When: Containers need to communicate

# docker-compose.yml
services:
  web:
    depends_on:
      api:
        condition: service_healthy
    # Use container name, not localhost
    environment:
      - API_BASE_URL=http://api:80

Volume Persistence

When: Data must survive container restarts

volumes:
  api-data:
  api-logs:

services:
  api:
    volumes:
      - api-data:/app/data    # JSON config files
      - api-logs:/app/logs    # Serilog output

See Also

Related Skills

  • See the dotnet skill for .NET 10 SDK configuration in Dockerfiles
  • See the aspnet-core skill for API container configuration
  • See the serilog skill for log volume configuration
Weekly Installs
2
GitHub Stars
1
First Seen
12 days ago
Installed on
opencode2
gemini-cli2
codebuddy2
github-copilot2
codex2
kimi-cli2