PI06 i PI06-1. Docker definitions for MSSQL and Postgres. Data seeder/generator for countries and people. Entity Framework example with variants for Postgres and MSSQL
This commit is contained in:
93
docker-definitions/README.md
Normal file
93
docker-definitions/README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# Docker Definitions
|
||||
|
||||
This folder contains local Docker-based infrastructure definitions used by the teaching materials in this repository.
|
||||
|
||||
## Available Setups
|
||||
|
||||
- [postgres-eventsdb](docker-definitions/postgres-eventsdb): the main PostgreSQL database for application runs
|
||||
- [mssql-eventsdb](docker-definitions/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 `init` directory
|
||||
- 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.example`
|
||||
- `docker-compose.yml`: service definitions
|
||||
- `init`: startup scripts copied into `/docker-entrypoint-initdb.d`
|
||||
- `backup`: optional location for backup files
|
||||
|
||||
Before starting a setup for the first time, copy the example file in that folder:
|
||||
|
||||
```powershell
|
||||
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:
|
||||
|
||||
```bash
|
||||
chmod +x docker-definitions/postgres-eventsdb/init/*.sh
|
||||
```
|
||||
|
||||
## Running The Main Database
|
||||
|
||||
For normal day-to-day startup, use:
|
||||
|
||||
```powershell
|
||||
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
|
||||
|
||||
```powershell
|
||||
docker compose -f docker-definitions\mssql-eventsdb\docker-compose.yml up -d --build
|
||||
```
|
||||
|
||||
To stop the containers without deleting named volumes:
|
||||
|
||||
```powershell
|
||||
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:
|
||||
|
||||
```powershell
|
||||
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\backup` to `/backup`
|
||||
- Microsoft SQL Server on port `1433`
|
||||
- local SQL Server backup folder mounted from `docker-definitions\mssql-eventsdb\backup` to `/var/opt/mssql/backup`
|
||||
|
||||
## Configuration Notes
|
||||
|
||||
- review the `.env` files before sharing or reusing the setup outside local teaching and demo environments
|
||||
- application projects connect with the `sport` user created by the initialization scripts
|
||||
- if you change ports or passwords in `.env`, update the matching `dotnet user-secrets` connection strings as well
|
||||
- the SQL Server setup uses `Croatian_100_CI_AS_SC_UTF8` collation 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
|
||||
Reference in New Issue
Block a user