Skip to content

docker-compose postgres pgadmin Lösung

Hier einen kurze Anleitung wie man die Aufgabe "postgres und pgadmin mit einem docker-compose" lösen kann.

Step für Step vorgehen

  1. öffnen des stacks im portainer unter docker desktop alt text

  2. neuen Stack anlegen mit dem Webeditor offen alt text

  3. folgenden Text im Web editor fenster einbinden:

Passwörter etc. werden später in den Umgebungsvariablen gesetzt und nicht im text!

version: '3.8'

services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_DB: $POSTGRES_DB
      POSTGRES_USER: $POSTGRES_USER
      POSTGRES_PASSWORD: $POSTGRES_PASSWORD
    volumes:
      - postgres_data:/var/lib/postgresql/data
    # es ist nicht notwendig den port des postgres server nach aussen zu geben, im docker compose file kann freigegebene port direkt verwedet werden!
    #ports:
    #  - "5432:5432"
    restart: unless-stopped

  pgadmin:
    image: dpage/pgadmin4:latest
    container_name: pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: $PGADMIN_EMAIL
      PGADMIN_DEFAULT_PASSWORD: $PGADMIN_PASSWORD
    volumes:
      - pgadmin_data:/var/lib/pgadmin
    ports:
      - "82:80"
    restart: unless-stopped
    depends_on:
      - postgres

volumes:
  postgres_data:
  pgadmin_data:
  1. Umgebungsvariablen setzen folgende Angababen müssen gesetzt werden: alt text

  2. starten, bwz. den Stack deployen alt text

  3. anmelden bei pgadmin Du kanns dich am Port 82 an deinem localhost anmelden und solltest folgendes Fenster sehen: alt text

Du kannst dich jetzt mit den Daten aus der Environmentkonfiguration mit PGADMIN_EMAIL und PGADMIN_PASSWORD anmelden.

  1. Verbindung zur Datenbank aufbauen PGAdmin kennt jetzt deinen postgres Datenbankserver noch nicht. Du musst dich jetzt damit verbinden. alt text

Servername eingeben. Der Name ist eigentlich Egal. Er sollte beschreiben um welchen Server / Datenbanksystem es sich handelt. Also wenn der Server local am standardport läuft ev. einfach local (default). Wenn er im Netzwerk läuft dann ev. den Servernamen angeben alt text

Jetzt noch den Hostnamen angeben:

wichtig zu verstehen: jeder docker container hat seine eigene localhost adresse. Ihr befindet euch aktuell im pgAdmin container und somit müssst ihr den postgres servicename / Cotainername / Hostnamen angeben.

  • der defaultport für postgres ist 5432.
  • die Maintenance Datenbank ist meistens postgres. Diese Datenbank gibt es immer
  • der Username kommt aus den Umgebungsvariablen
  • das Passwort kommt aus den Umgebungsvariablen
  • ich empfehle dir für die lokale Entwicklung das Passwort zu speichern
  • Role und Service kannst du leer lassen

alt text

Jetzt solltest du du mit deinem Server / deiner Datenbank verbunden sein: alt text