3.7 KiB
Docker Definitions
This folder contains local Docker-based infrastructure definitions used by the teaching materials in this repository.
Available Setups
- postgres-eventsdb: the main PostgreSQL database for application runs
- mssql-eventsdb: the same teaching database adapted for Microsoft SQL Server with Full-Text Search
What The Containers Provide
- initialized PostgreSQL instances
- initialized Microsoft SQL Server instances
- schema creation through startup scripts in each
initdirectory - seed data used by the examples
Important Files
For each PostgreSQL setup:
.env.example: committed template for local container settings such as ports, usernames, and passwords.env: local copy created from.env.exampledocker-compose.yml: service definitionsinit: startup scripts copied into/docker-entrypoint-initdb.dbackup: optional location for backup files
Before starting a setup for the first time, copy the example file in that folder:
Copy-Item docker-definitions\postgres-eventsdb\.env.example docker-definitions\postgres-eventsdb\.env
Copy-Item docker-definitions\mssql-eventsdb\.env.example docker-definitions\mssql-eventsdb\.env
On Linux and macOS, make sure the shell scripts in each init folder are executable before starting the containers:
chmod +x docker-definitions/postgres-eventsdb/init/*.sh
Running The Main Database
For normal day-to-day startup, use:
docker compose -f docker-definitions\postgres-eventsdb\docker-compose.yml up -d
docker compose -f docker-definitions\mssql-eventsdb\docker-compose.yml up -d
For mssql-eventsdb, use --build when you changed the Docker image setup, for example:
Dockerfile- files in
scripts - initialization logic that depends on the image contents
docker compose -f docker-definitions\mssql-eventsdb\docker-compose.yml up -d --build
To stop the containers without deleting named volumes:
docker compose -f docker-definitions\postgres-eventsdb\docker-compose.yml down
docker compose -f docker-definitions\mssql-eventsdb\docker-compose.yml down
To stop the containers and also remove named volumes:
docker compose -f docker-definitions\postgres-eventsdb\docker-compose.yml down -v
docker compose -f docker-definitions\mssql-eventsdb\docker-compose.yml down -v
-v removes the named Docker volumes created by the setup, which also deletes the persisted database files. Use it only when you want a clean re-initialization.
The named database volumes use the pi_ prefix to reduce the chance of accidental reuse across unrelated Docker setups.
Default services:
- PostgreSQL on port
5432 - local PostgreSQL backup folder mounted from
docker-definitions\postgres-eventsdb\backupto/backup - Microsoft SQL Server on port
1433 - local SQL Server backup folder mounted from
docker-definitions\mssql-eventsdb\backupto/var/opt/mssql/backup
Configuration Notes
- review the
.envfiles before sharing or reusing the setup outside local teaching and demo environments - application projects connect with the
sportuser created by the initialization scripts - if you change ports or passwords in
.env, update the matchingdotnet user-secretsconnection strings as well - the SQL Server setup uses
Croatian_100_CI_AS_SC_UTF8collation and has the Full-Text Search package installed, but no runtime full-text checks, catalogs, or indexes are created by default
Troubleshooting
- If the database is not initialized as expected, remove the Docker volume and recreate the container so the init scripts run again