Postgresqldockerfile
#Baseimage
FROM ubuntu:18.04
#Paketquellen aktualisieren
RUN apt-get update
#Postgresql installieren -y -> ohne interaktion
RUN apt-get install -y postgresql
#Postgres soll auf Anfragen von allen Networkinterfaces hören
RUN sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/10/main/postgresql.conf
#Zugriff über das Dockernetzwer erlauben
RUN echo "host all all 172.17.0.1/32 md5" >> /etc/postgresql/10/main/pg_hba.conf
#Start postgresql service and sleep forever
CMD service postgresql start && sleep infinity
Bauen des Images
docker build -t postgresqlimage:latest -f Postgresldockerfile .
Gegenfalls container stoppen und löschen
#Stoppen
docker container stop postgresql
#Löschen
docker container rm postgresql
Volume für Container erstellen
docker volume create postgresqlvolume
Starten des containers
docker run -dit -v postgresqlvolume:/var/lib/postgresql -p 23456:5432 --name postgresql postgresqlimage:latest
In Container einsteigen, mit Datenbank verbinden und Benutzer anlegen
#In Container einsteigen
docker exec -it postgresql bash
#Als postgres Benutzer anmelden
su postgres
#Mit Datenbank verbinden
psql
#Benutzer anlegen
CREATE USER mondial with PASSWORD 'pwd';
#Datenbank anlegen
CREATE DATABASE Mondial;
#Berechtigung setzen
GRANT ALL PRIVILEGES ON DATABASE Mondial TO mondial;
PostgreSQL Client installieren auf Host System
sudo apt-get install postgresql-client
Verbinden mit Datenbank vom Host aus
psql --host=127.0.0.1 --port=23456 -U mondial -W