From 33af23cb59f76d2da387360e862d1d0ee24e8a9a Mon Sep 17 00:00:00 2001 From: David Fowler Date: Sun, 11 Feb 2024 21:44:44 +1100 Subject: [PATCH] Minor tweaks to lab 1 (#18) * Minor tweaks to lab 1 - Added docker compose instructions - Added images for how to find the random port for pgadmin - Fix localhost to host.docker.internal * Update labs/1-Create-Catalog-API/README.md Co-authored-by: Damian Edwards --------- Co-authored-by: Damian Edwards --- labs/1-Create-Catalog-API/README.md | 36 +++++++++++++++++- .../img/find-docker-endpoint-ui.png | Bin 0 -> 22077 bytes .../img/find-docker-endpoint.png | Bin 0 -> 19263 bytes 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 labs/1-Create-Catalog-API/img/find-docker-endpoint-ui.png create mode 100644 labs/1-Create-Catalog-API/img/find-docker-endpoint.png diff --git a/labs/1-Create-Catalog-API/README.md b/labs/1-Create-Catalog-API/README.md index 5ffee4c..e3d5c97 100644 --- a/labs/1-Create-Catalog-API/README.md +++ b/labs/1-Create-Catalog-API/README.md @@ -15,6 +15,24 @@ A database has already been defined to store the product catalog for eShop, alon In order to successfully run the the `Catalog.Data.Manager` application and see the database be created, a PostgreSQL database server is required. The project is pre-configured to connect to a local server using *trust* authentication in its `appsettings.Development.json` file. Docker is a simple way to run instances of databases for development. +We're going to run 2 docker container:, the PostgreSQL container, and [pgAdmin](https://www.pgadmin.org/). This will make it easy to inspect the database using a visual tool: + +### Docker CLI + +postgres + +``` +docker run --name postgres-dev -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 -d postgres +``` + +pgAdmin + +``` +docker run --name pgadmin-dev -e PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False -e PGADMIN_CONFIG_SERVER_MODE=False -e PGADMIN_DEFAULT_EMAIL=admin@domain.com -e PGADMIN_DEFAULT_PASSWORD=admin -p 0:80 -d dpage/pgadmin4 +``` + +### Docker Desktop + 1. Using Docker, create a container to host the PostgreSQL server with the following details: - Name: `postgres-dev` - Image: `postgres:latest` @@ -23,7 +41,7 @@ In order to successfully run the the `Catalog.Data.Manager` application and see - `POSTGRES_HOST_AUTH_METHOD` : `trust` ![Creating a container for PostgreSQL in Docker Desktop](./img/docker-postgres-dev.png) -1. Create another container to host an instance of [pgAdmin](https://www.pgadmin.org/). This will make it easy to inspect the database using a visual tool: +1. Create another container to host an instance of [pgAdmin](https://www.pgadmin.org/): - Name: `pgadmin-dev` - Image: `dpage/pgadmin4:latest` - Ports: `0` (random) @@ -43,7 +61,21 @@ In order to successfully run the the `Catalog.Data.Manager` application and see ![Logs and health-check endpoint of the Catalog.Data.Manager project showing the database initialization status](./img/catalog.data.manager-logs-and-health.png) 1. Stop the application and try launching it again and seeing the output of the `/health` endpoint return `Degraded` while the database initialization is still in progress. -1. Open the pgAdmin UI in another browser tab (find the host port assigned to the container's endpoint on port 80 in the Docker UI) and add the local PostgreSQL server instance by right-clicking on the **Servers** node in the tree-view and selecting **Register > Server** (use `localhost` in the **Connection** tab). +1. Find the port assigned to the pgAdmin container. + +**Docker CLI** + +``` +docker ps +``` + +![Image of the docker CLI showing the port for pgAdmin](./img/find-docker-endpoint.png) + +**Docker Desktop** + +![Image of docker desktop UI showing the port for pgAdmin](./img/find-docker-endpoint-ui.png) + +1. Open the pgAdmin UI in another browser tab and add the local PostgreSQL server instance by right-clicking on the **Servers** node in the tree-view and selecting **Register > Server** (use `host.docker.internal` in the **Connection** tab). 1. Expand the tree-view nodes under the server node you registered to see the that the tables representing the Entity Framework Core model have been created. ![pgAdmin UI showing the created tables](./img/pgadmin-postgres-dev.png) diff --git a/labs/1-Create-Catalog-API/img/find-docker-endpoint-ui.png b/labs/1-Create-Catalog-API/img/find-docker-endpoint-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..50c6e7849704cf87fe9c9b072347f7e0fbf8b949 GIT binary patch literal 22077 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 literal 0 HcmV?d00001 diff --git a/labs/1-Create-Catalog-API/img/find-docker-endpoint.png b/labs/1-Create-Catalog-API/img/find-docker-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..973740b5beab99cbef658c14fcb42680fd554e53 GIT binary patch literal 19263 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 DCr(^* literal 0 HcmV?d00001