# Containerization ## Dockerfile Multi-stage build targeting .NET 10.0: 1. **Base stage** (`mcr.microsoft.com/dotnet/aspnet:10.0`): Runtime image, exposes port 8080. 2. **Build stage** (`mcr.microsoft.com/dotnet/sdk:10.0`): Restores packages, builds release configuration. Supports cross-platform builds via `$BUILDPLATFORM` and `$TARGETARCH`. 3. **Publish stage**: Publishes with `UseAppHost=false`, targets Linux with specified architecture. 4. **Final stage**: Copies published output, sets entrypoint to `dotnet Azaion.AdminApi.dll`. ## Container Registry - Private registry: `docker.azaion.com` - Deploy command: `docker build -t docker.azaion.com/api . && docker push docker.azaion.com/api` - CI registry: `localhost:5000` (Woodpecker CI local registry) ## Tags | Branch | Tag | |--------|-----| | `main` | `arm` | | `dev` | `dev-arm` | | `stage` | `stage-arm` | ## Docker Test A placeholder `docker.test/Dockerfile` exists (`FROM alpine:latest; CMD echo hello`) — appears unused.