Console Application Sample
This sample demonstrates containerizing a .NET console application for batch processing and CLI tools.
Overview
Project Type: .NET Console Application
Location: samples/ConsoleApp/
Image Name: console-app-sample
Default Port: None
Quick Start
cd samples/ConsoleApp
dotnet publish --configuration Release
docker run console-app-sample:latest
What This Demonstrates
- Console app containerization
- Command-line argument handling
- One-time execution pattern
- Exit code handling
- Standard input/output in containers
Project Structure
ConsoleApp/
├── Program.cs # Console application logic
├── ConsoleApp.csproj # Project with Docker config
└── Dockerfile # Auto-generated
Application Code
// Program.cs
Console.WriteLine("Hello from containerized console app!");
Console.WriteLine($"Arguments: {string.Join(", ", args)}");
// Simulate some work
await Task.Delay(2000);
Console.WriteLine("Processing complete.");
return 0; // Exit code
Docker Configuration
<PropertyGroup>
<DockerEnabled>true</DockerEnabled>
<DockerImageName>console-app-sample</DockerImageName>
<DockerImageTag>latest</DockerImageTag>
</PropertyGroup>
Running the Sample
Basic Execution
dotnet publish --configuration Release
docker run console-app-sample:latest
With Arguments
docker run console-app-sample:latest arg1 arg2 arg3
With Input Redirection
echo "input data" | docker run -i console-app-sample:latest
Capturing Exit Code
docker run console-app-sample:latest
echo "Exit code: $?"
Use Cases
Console app containers are useful for:
- Batch Jobs: Process files, generate reports
- CI/CD Tools: Custom build steps, deployment scripts
- Database Migrations: One-time schema updates
- Data Processing: ETL pipelines
- Administrative Tasks: Cleanup, maintenance
Kubernetes Job Example
apiVersion: batch/v1
kind: Job
metadata:
name: console-job
spec:
template:
spec:
containers:
- name: console
image: console-app-sample:latest
args: ["--process-all", "--verbose"]
restartPolicy: Never
backoffLimit: 4