# Lutra API REST API for Verspakketten, built with .NET 10 and PostgreSQL. ## Prerequisites - [Docker](https://docs.docker.com/get-docker/) installed and running - A PostgreSQL database reachable from the container ## Running with Docker ### 1. Build the image Run this command from the **root of the repository** (where `Lutra.sln` lives), because the Dockerfile copies the full solution source tree during the build: ```bash docker build -f Lutra.API/Dockerfile -t lutra-api . ``` ### 2. Run the container Supply the PostgreSQL connection string via the `ConnectionStrings__LutraDb` environment variable: ```bash docker run -d \ --name lutra-api \ -p 8080:8080 \ -e ConnectionStrings__LutraDb="Host=;Username=;Password=;Database=Lutra" \ lutra-api ``` > **How it works:** ASP.NET Core maps environment variables to configuration keys by replacing > `__` with `:`, so `ConnectionStrings__LutraDb` is equivalent to `ConnectionStrings:LutraDb` > in `appsettings.json`. No code changes are needed. The API will be available at `http://localhost:8080`. ### 3. (Optional) docker-compose Create a `docker-compose.yml` alongside this README and adjust the values to your environment: ```yaml services: api: image: lutra-api build: context: . dockerfile: Lutra.API/Dockerfile ports: - "8080:8080" environment: - ConnectionStrings__LutraDb=Host=db;Username=user;Password=secret;Database=Lutra depends_on: - db db: image: postgres:17 environment: POSTGRES_USER: user POSTGRES_PASSWORD: secret POSTGRES_DB: Lutra volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: ``` Then run: ```bash docker compose up -d ``` ## Configuration reference All settings can be overridden with environment variables using the `__` separator. | Environment variable | Default | Description | |---|---|---| | `ConnectionStrings__LutraDb` | *(empty)* | Full Npgsql connection string to the PostgreSQL database | | `ASPNETCORE_ENVIRONMENT` | `Production` | Set to `Development` to enable Scalar API docs at `/scalar/v1` | ## Development See the individual project READMEs or the `.github/copilot-instructions.md` for architecture and contribution guidelines.