Skip to content

alex1ozr/DockerTests

Repository files navigation

About project

Sample of Web API and tests with Database in Docker, along with "build as code" using Nuke Build.

Key features:

Prerequisites

Main

Running API

In order to run the API, you need to have a PostgreSQL database running. You can use the provided Docker Compose file to run it.

List of services:

  • PostgreSQL: localhost:5432
  • Grafana: https://localhost:3000
  • Jaeger: https://localhost:16686
  • Prometheus: https://localhost:9090
  • Loki: https://localhost:3100

Projects to start

API

Starts the HTTP-server

Tests

Execute all tests

dotnet test

Execute only integration tests

dotnet test --filter Category=IntegrationTests

Create Db Context migrations

#Install EF utils
dotnet tool install --global dotnet-ef

#Create schema migration
dotnet ef migrations add <Name of your migration> --startup-project src/Api -p src/Store -c PopulationDbContext

Build solution using Nuke build

Install the global tool

dotnet tool install Nuke.GlobalTool --global

Run build

Using a global tool

nuke

Using a PowerShell script

Execute from the root of the repository

pwsh build.ps1 -DockerRepositoriesUrl https://some.docker.registry -Branch some-dev-branch -BuildCounter 1 -DockerRepositoryName some-docker-repo-name -NuGetUrl https://some.nuget.registry -NuGetFeedName some-nuget-feed-name -NuGetApiKey some-nuget-api-key

Execution plan

Execute the following command to see the interactive execution plan

nuke --plan

Build execution plan

API Client

API client is generated using NSwag tool.

It generates automatically when ClientGenerator project is built.

See more details in NSwag documentation and nswag.json file.

Metrics

To see current app metrics, go to https://localhost:5005/metrics

Grafana

Grafana runs automatically using Docker Compose and is available at https://localhost:3000. It has three predefined data sources:

  • Prometheus
  • Loki
  • Jaeger