Ich habe versucht, einen Container für eine Postgres-Entwicklungsinstanz einzurichten, indem ich einen benutzerdefinierten Benutzer und eine benutzerdefinierte Datenbank erstellt habe. Ich verwende das offizielle Postgres-Docker-Bild . In der Dokumentation werden Sie angewiesen, ein Bash-Skript in den /docker-entrypoint-initdb.d/
Ordner einzufügen , um die Datenbank mit benutzerdefinierten Parametern einzurichten.
Mein Bash-Skript: make_db.sh
su postgres -c "createuser -w -d -r -s docker"
su postgres -c "createdb -O docker docker"
Dockerfile
FROM library/postgres
RUN ["mkdir", "/docker-entrypoint-initdb.d"]
ADD make_db.sh /docker-entrypoint-initdb.d/
Der Fehler, den ich von docker logs -f db
(db ist mein Containername) bekomme, ist:
createuser: konnte keine Verbindung zur Datenbank herstellen postgres: konnte keine Verbindung zum Server herstellen: Keine solche Datei oder kein solches Verzeichnis
Es scheint, dass die Befehle im /docker-entrypoint-initdb.d/
Ordner ausgeführt werden, bevor postgres gestartet wird. Meine Frage ist, wie ich einen Benutzer / eine Datenbank programmgesteuert mit dem offiziellen Postgres-Container einrichte. Gibt es eine Möglichkeit, dies mit einem Skript zu tun?
gosu postgres postgres --single < /tmp/somefile.sql