~/CodeBlog.at

Ein halbkreativer Entwickler über alles zwischen C# und TYPO3.

Staging-Datenbank in ddev importieren

Bei meinem aktuellen Projekt arbeiten die Redakteure parallel sehr fleißig am Content der Seite und ständig kommen Fragen oder Bugs zu neuen CEs, die ich auf meiner lokalen Umgebung noch gar nicht angelegt habe. Bisher hab‘ ich mir die Datenbank immer manuell geholt. Per SSH auf den Server, mysqldump, downloaden und in ddev einspielen. Aber das muss doch einfacher gehen, vor allem wenn man das alle paar Stunden einmal machen muss.

Auf Twitter habe ich einige Anregungen und Hilfen bekommen. An dieser Stelle danke an Geddo2k, Matthias, Stefan und Andreas.

Anfangs wollte ich es als externes Bash Script machen, aber ich hab mich dann doch für die ddev provider entschieden.

Das Skript unter .ddev/providers/staging.yaml dafür schaut nun so aus:

environment_variables:
  server: user@host

auth_command:
  command: |
    set -eu -o pipefail
    ssh-add -l > /dev/null || ( echo "Please 'ddev auth ssh' before running this command." && exit 1 )

db_pull_command:
  command: |
    set -x
    set -eu -o pipefail
    ssh -t ${server} -p 22222 'mysqldump --defaults-file=~/.mysql/db.cnf dbname' > .ddev/.downloads/db.sql
    gzip .ddev/.downloads/db.sql
  service: web

files_import_command:
  command: |
    set -eu -o pipefail
    echo $PATH
    echo "doing nothing ..."
  service: web

ddev providers erwarten den SQL-Dump gezippt, daher mache ich das noch. Wollte ich eigentlich am Server zippen und die Datei dann über rsync downloaden, aber das hat dann nicht auf Anhieb funktioniert und dann war meine Geduld dafür auch irgendwann am Ende. Schließlicht wollte ich eine 5-Minuten Arbeit automatisieren und nicht +3h an einem Script feilen.

Wichtig ist hierbei vor allem die Datei ~/.mysql/db.cnf im Home-Verzeichnis am Server. Ich wollte unbedingt vermeiden, dass ich lokal die Zugangsdaten für die Datenbank speichern muss oder diese womöglich irgendwie/irgendwann im Git landen. Daher wollte ich die Datenbank mit Hilfe der typo3console exportieren, aber diese läuft nur, wenn mein User im webroot Schreibrechte hat. Diese habe ich auf dem Server allerdings nicht. Daher fällt das weg. Also doch der bekannte Weg über den mysqldump.

Die Datei hat folgenden Inhalt:

[client]
user = "foo"
password = "bar"
host = "127.0.0.1"

Vielen Dank an Kay für das initiale Script und die Hilfe beim Anpassen an meine Bedürfnisse!

 

Staging-Datenbank in ddev importieren - CodeBlog.at