Update DEPLOYMENT.md to enhance Docker image publishing instructions

Revised the section on building and running Docker images to include a recommended PowerShell script for publishing to a Docker registry. Added detailed options and examples for using the script, while maintaining the manual build instructions for flexibility. This update improves clarity and usability for developers deploying the application.
This commit is contained in:
2026-01-05 23:06:00 -05:00
parent 76f285b3af
commit db4f1ba6fc
2 changed files with 207 additions and 1 deletions
+35 -1
View File
@@ -107,13 +107,47 @@ stringData:
## Building and Running
### Build the Docker Image
### Publish to Docker Registry (Recommended)
Use the provided PowerShell script to build and publish the Docker image:
```powershell
.\publish-docker.ps1
```
**Options:**
- `-Tag "v1.0.0"` - Specify a custom tag (default: "latest")
- `-Registry "docker-registry.kolpacksoftware.com"` - Specify registry URL
- `-ImageName "tsa-chapter-organizer"` - Specify image name
- `-BuildConfiguration "Release"` - Specify build configuration
**Examples:**
```powershell
# Publish with default settings (latest tag)
.\publish-docker.ps1
# Publish with a version tag
.\publish-docker.ps1 -Tag "v1.0.0"
# Publish with custom registry
.\publish-docker.ps1 -Tag "latest" -Registry "my-registry.com"
```
### Build the Docker Image (Manual)
If you prefer to build manually:
```bash
cd WebApp
docker build -t tsa-chapter-organizer:latest .
```
Or from the root directory:
```bash
docker build -f WebApp/Dockerfile -t tsa-chapter-organizer:latest .
```
### Run with Docker Compose
```bash
+172
View File
@@ -0,0 +1,172 @@
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Builds and publishes the TSA Chapter Organizer Docker image to the registry.
.DESCRIPTION
This script builds the Docker image from the WebApp Dockerfile and pushes it
to the Docker registry at docker-registry.kolpacksoftware.com.
.PARAMETER Tag
The tag to use for the Docker image. Defaults to "latest".
.PARAMETER Registry
The Docker registry URL. Defaults to "docker-registry.kolpacksoftware.com".
.PARAMETER ImageName
The name of the Docker image. Defaults to "tsa-chapter-organizer".
.PARAMETER BuildConfiguration
The build configuration to use. Defaults to "Release".
.EXAMPLE
.\publish-docker.ps1
.EXAMPLE
.\publish-docker.ps1 -Tag "v1.0.0"
.EXAMPLE
.\publish-docker.ps1 -Tag "latest" -Registry "docker-registry.kolpacksoftware.com"
#>
param(
[string]$Tag = "latest",
[string]$Registry = "docker-registry.kolpacksoftware.com",
[string]$ImageName = "tsa-chapter-organizer",
[string]$BuildConfiguration = "Release"
)
$ErrorActionPreference = "Continue"
# Colors for output
function Write-Info {
param([string]$Message)
Write-Host $Message -ForegroundColor Cyan
}
function Write-Success {
param([string]$Message)
Write-Host $Message -ForegroundColor Green
}
function Write-ErrorMsg {
param([string]$Message)
Write-Host $Message -ForegroundColor Red
}
function Write-WarningMsg {
param([string]$Message)
Write-Host $Message -ForegroundColor Yellow
}
# Check if Docker is available
Write-Info "Checking Docker installation..."
try {
$dockerVersion = docker --version
Write-Success "Docker found: $dockerVersion"
} catch {
Write-ErrorMsg "Docker is not installed or not in PATH. Please install Docker Desktop."
exit 1
}
# Check if Docker daemon is running
Write-Info "Checking Docker daemon..."
try {
docker info | Out-Null
Write-Success "Docker daemon is running"
} catch {
Write-ErrorMsg "Docker daemon is not running. Please start Docker Desktop."
exit 1
}
# Set up paths
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$rootPath = $scriptPath
$dockerfilePath = Join-Path $rootPath "WebApp\Dockerfile"
# Verify Dockerfile exists
if (-not (Test-Path $dockerfilePath)) {
Write-ErrorMsg "Dockerfile not found at: $dockerfilePath"
exit 1
}
# Build image names
$localImageName = "${ImageName}:${Tag}"
$registryImageName = "${Registry}/${ImageName}:${Tag}"
Write-Info "========================================="
Write-Info "Docker Build and Publish Script"
Write-Info "========================================="
Write-Info "Local Image: $localImageName"
Write-Info "Registry Image: $registryImageName"
Write-Info "Build Config: $BuildConfiguration"
Write-Info "========================================="
Write-Host ""
# Step 1: Build the Docker image
Write-Info "Step 1: Building Docker image..."
Write-Info "Building from: $rootPath"
Write-Info "Dockerfile: $dockerfilePath"
Write-Host ""
$buildArgs = @(
"build",
"-f", $dockerfilePath,
"-t", $localImageName,
"--build-arg", "BUILD_CONFIGURATION=$BuildConfiguration",
$rootPath
)
& docker $buildArgs
if ($LASTEXITCODE -ne 0) {
Write-ErrorMsg "[ERROR] Docker build failed with exit code $LASTEXITCODE"
exit 1
}
Write-Success "[OK] Docker image built successfully: $localImageName"
Write-Host ""
# Step 2: Tag the image for the registry
Write-Info "Step 2: Tagging image for registry..."
docker tag $localImageName $registryImageName
if ($LASTEXITCODE -ne 0) {
Write-ErrorMsg "[ERROR] Docker tag failed with exit code $LASTEXITCODE"
exit 1
}
Write-Success "[OK] Image tagged successfully: $registryImageName"
Write-Host ""
# Step 3: Push to registry
Write-Info "Step 3: Pushing image to registry..."
Write-Info "Registry: $Registry"
Write-Host ""
docker push $registryImageName
if ($LASTEXITCODE -ne 0) {
Write-ErrorMsg "[ERROR] Docker push failed with exit code $LASTEXITCODE"
Write-WarningMsg "Make sure you are logged in to the registry:"
Write-WarningMsg " docker login $Registry"
exit 1
}
Write-Success "[OK] Image pushed successfully to registry"
Write-Host ""
Write-Info "========================================="
Write-Success "[OK] Build and publish completed successfully!"
Write-Info "========================================="
Write-Info "Image available at: $registryImageName"
Write-Host ""
# Get image digest if available
$null = docker inspect $registryImageName --format '{{.RepoDigests}}' 2>&1
if ($LASTEXITCODE -eq 0) {
$imageInfo = docker inspect $registryImageName --format '{{.RepoDigests}}'
if ($imageInfo) {
Write-Info "Image digest: $imageInfo"
}
}
Write-Host ""
Write-Info "You can now pull this image with:"
Write-Host " docker pull $registryImageName" -ForegroundColor Gray