|
@@ -0,0 +1,68 @@
|
|
|
|
|
+## PostgreSQL and pgAdmin
|
|
|
|
|
+This example provides a base setup for using [PostgreSQL](https://www.postgresql.org/) and [pgAdmin](https://www.pgadmin.org/).
|
|
|
|
|
+More details on how to customize the installation and the compose file can be found [here (PostgreSQL)](https://hub.docker.com/_/postgres) and [here (pgAdmin)](https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html).
|
|
|
|
|
+
|
|
|
|
|
+Project structure:
|
|
|
|
|
+```
|
|
|
|
|
+.
|
|
|
|
|
+├── .env
|
|
|
|
|
+├── docker-compose.yaml
|
|
|
|
|
+└── README.md
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+[_docker-compose.yaml_](docker-compose.yaml)
|
|
|
|
|
+``` yaml
|
|
|
|
|
+services:
|
|
|
|
|
+ postgres:
|
|
|
|
|
+ image: postgres:latest
|
|
|
|
|
+ ...
|
|
|
|
|
+ pgadmin:
|
|
|
|
|
+ image: dpage/pgadmin4:latest
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Configuration
|
|
|
|
|
+
|
|
|
|
|
+### .env
|
|
|
|
|
+Before deploying this setup, you need to configure the following values in the [.env](.env) file.
|
|
|
|
|
+- POSTGRES_USER
|
|
|
|
|
+- POSTGRES_PW
|
|
|
|
|
+- POSTGRES_DB (can be default value)
|
|
|
|
|
+- PGADMIN_MAIL
|
|
|
|
|
+- PGADMIN_PW
|
|
|
|
|
+
|
|
|
|
|
+## Deploy with docker-compose
|
|
|
|
|
+When deploying this setup, the pgAdmin web interface will be available at port 5050 (e.g. http://localhost:5050).
|
|
|
|
|
+
|
|
|
|
|
+``` shell
|
|
|
|
|
+$ docker-compose up
|
|
|
|
|
+Starting postgres ... done
|
|
|
|
|
+Starting pgadmin ... done
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## Add postgres database to pgAdmin
|
|
|
|
|
+After logging in with your credentials of the .env file, you can add your database to pgAdmin.
|
|
|
|
|
+1. Right-click "Servers" in the top-left corner and select "Create" -> "Server..."
|
|
|
|
|
+2. Name your connection
|
|
|
|
|
+3. Change to the "Connection" tab and add the connection details:
|
|
|
|
|
+- Hostname: "postgres" (this would normally be your IP address of the postgres database - however, docker can resolve this container ip by its name)
|
|
|
|
|
+- Port: "5432"
|
|
|
|
|
+- Maintenance Database: $POSTGRES_DB (see .env)
|
|
|
|
|
+- Username: $POSTGRES_USER (see .env)
|
|
|
|
|
+- Password: $POSTGRES_PW (see .env)
|
|
|
|
|
+
|
|
|
|
|
+## Expected result
|
|
|
|
|
+
|
|
|
|
|
+Check containers are running:
|
|
|
|
|
+```
|
|
|
|
|
+$ docker ps
|
|
|
|
|
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
|
|
|
|
+849c5f48f784 postgres:latest "docker-entrypoint.s…" 9 minutes ago Up 9 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres
|
|
|
|
|
+d3cde3b455ee dpage/pgadmin4:latest "/entrypoint.sh" 9 minutes ago Up 9 minutes 443/tcp, 0.0.0.0:5050->80/tcp, :::5050->80/tcp pgadmin
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+Stop the containers with
|
|
|
|
|
+``` shell
|
|
|
|
|
+$ docker-compose down
|
|
|
|
|
+# To delete all data run:
|
|
|
|
|
+$ docker-compose down -v
|
|
|
|
|
+```
|