Setup and usages for Docker, and how it can be used with local development and testing.
This repository now uses a Docker Compose-first process. Direct Docker CLI is still used only for operations that Compose does not replace well (for example, dotnet publish, mvn package, and docker exec SQL initialization commands).
Install and set up Docker on your local PC.
Docker documentation:
Open a command line window. The commands found in this, and related, READMEs will be executed in this command line window.
Change to the current directory.
cd C:\Working\Storage\Dev\GitHub\Docker
Create a new working directory (if not already existing):
if not exist C:\Working\Storage\Dev\GitHub\Working mkdir C:\Working\Storage\Dev\GitHub\Working
Then, execute the networking command listed in the Network section below.
Api_dotnet\docker-compose.api-dotnet.ymlApi_java\docker-compose.api-java.ymlApi_python\docker-compose.api-python.ymlHomepage\docker-compose.homepage.ymlPostgreSQL\docker-compose.postgresql.ymlSqlServer\docker-compose.sqlserver.ymlUi_angular\docker-compose.ui-angular.ymlUtility_dotnet\docker-compose.utility-dotnet.yml
Api_dotnet\Docker-Api-dotnet-builder.batApi_java\Docker-Api-java-builder.batApi_python\Docker-Api-python-builder.batDozzle\Docker-Dozzle-builder.batHomepage\Docker-Homepage-builder.batPostgreSQL\Docker-PostgreSQL-builder.batSqlServer\Docker-SQLServer-builder.batUi_angular\Docker-Ui-angular-builder.batUptimeKuma\Docker-UptimeKuma-builder.batUtility_dotnet\Docker-Utility-dornet-builder.bat
Each script is the primary entry point for its stack and is kept aligned with its corresponding README.
On Windows, the API builder scripts for .NET, Java, and Python automatically probe and select open host ports within predefined ranges when preferred ports are reserved or in use.
Runtime secrets are now stored in separate local files under the secrets/ directory.
- Template files (
*.env.example) are committed. - Local secret files (
*.env) are ignored by git.
See secrets/README.md for setup details.
Create an internal network that will be shared by the different containers that need to communicate with one another (if not already existing).
docker network inspect pilot-net >nul 2>&1 || docker network create pilot-net
Read details about the new network:
docker network inspect pilot-net
A real time Docker log viewer or partition logs.
Follow the directions in the Dozzle README.
A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
Follow the directions in the Homepage README.
A .NET Core API that presents data from the Northwind database (MS SQL Server or PostgreSQL)
Follow the directions in the API (DotNet) README.
A Java Spring Boot API that presents data from the Northwind database (MS SQL Server or PostgreSQL)
Follow the directions in the API (Java) README.
A Python FastAPI application that presents data from the Northwind database (MS SQL Server or PostgreSQL)
Follow the directions in the API (Python) README.
An Angular single page application that presents the Northwind data from the Pilot APIs.
Follow the directions in the UI (Angular) README.
A PostgreSQL database installation.
Follow the directions in the PostgreSQL README.
A Microsoft SQL Server database installation.
Follow the directions in the SQL Server README
Simple up or down checks and status pages for monitoring Docker partitions/applications, and other sources.
Follow the directions in the Uptime Kuma README.
A .NET Core API that contain utility tooling (MS SQL Server or PostgreSQL)
Follow the directions in the Utility (DotNet) README.
Natively supports OTLP to receive trace data.
Follow the directions in the Jaeger README.
Send your metric data to Prometheus.
Follow the directions in the Prometheus README.
A distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in service architectures. Features include both the collection and lookup of this data.
Follow the directions in the Zipkin README.
Redis provides solutions for caching
Follow the directions in the Redis README.
| Status: | Type: | Name: | Inner Port: | Outer Port: | URL |
|---|---|---|---|---|---|
| √ | Angular UI | pilot-ui | 4200 | 55401 | http://localhost:55901/ |
| √ | ApiDotNet (SQL Server) | pilot-api-dotnet-mssql | 8080 | 55101 | http://localhost:55101/swagger, http://localhost:55101/scalar |
| √ | ApiDotNet (PostgreSQL) | pilot-api-dotnet-postgres | 8080 | 55201 | http://localhost:55201/swagger, http://localhost:55201/scalar |
| √ | ApiJava (SQL Server) | pilot-api-java-mssql | 8080 | 55301 | http://localhost:55301/swagger-ui/index.html |
| √ | ApiJava (PostgreSQL) | pilot-api-java-postgres | 8080 | 55401 | http://localhost:55401/swagger-ui/index.html |
| √ | ApiPython (SQL Server) | pilot-api-python-mssql | 8000 | 55501 | http://localhost:55501/docs, http://localhost:55501/redoc |
| √ | ApiPython (PostgreSQL) | pilot-api-python-postgres | 8000 | 55601 | http://localhost:55601/docs, http://localhost:55601/redoc |
| √ | ApiUtility (SQL Server) | utility-api-dotnet-mssql | 8080 | 55701 | http://localhost:55701/swagger, http://localhost:55701/scalar |
| √ | ApiUtility (PostgreSQL) | utility-api-dotnet-postgres | 8080 | 55801 | http://localhost:55801/swagger, http://localhost:55801/scalar |
| √ | Dozzle | local-dozzle | 8080 | 56101 | http://localhost:56101 |
| √ | Grafana | local-grafana | 3000 | 3000 | http://localhost:3000 |
| √ | Homepage | local-homepage | 3000 | 56201 | http://localhost:56201 |
| √ | PostgreSQL | local-postgres | 5432 | 5432 | |
| √ | SQL Server | local-mssql | 1433 | 1433 | |
| √ | Uptime Kuma | local-uptimekuma | 3001 | 3001 | http://localhost:3001 |
| TBD | Komodo | local-komodo | 9120 | 9120 | |
| TBD | Bitwarden | local-bitwarden | ??? | ??? | |
| TBD | Duplicati | local-duplicati | 8200 | 8200 | |
| TBD | Keycloak | local-keycloak | ??? | ??? | |
| TBD | GO Feature Flag | local-gofeatureflag | ??? | ??? |