/ ghost

Mit anderen Geistern bloggen

Dieser Artikel ist eine direkte Anknüpfung an meinen früheren Artikel zu dem gleichen Thema. Da es das Docker Image auf das ich mich in dem alten Artikel bezogen habe, nicht mehr gibt, schreibe ich jetzt hier ein Update wie man von dem alten Setup auf das neue kommt.

Zuerst einmal gehe ich davon aus, dass du gerade den alten Artikel ließt oder gelesen hast. Daher gehe ich hier auch nur auf die Faktoren ein, die für die Migration vonnöten sind. Da es das Docker Image dockerfile/ghost nicht mehr gibt, müssen wir, wenn wir Updates haben wollen, auf das aktuelle Image ghost umsteigen. Leider hat dieses Image eine andere interne Struktur, wodurch verschiedene Anpassungen nötig werden.

Ich gehe dabei in dieser Anleitung davon aus, dass deine Ghost Daten im Verzeichnis /opt/ghost/ liegen. Früher sah dabei das Verzeichnis so aus:

/opt/ghost
|-- config.js
`-- content
    |-- data
    |   `-- ghost.db
    `-- images

Das neue Docker Image geht von einer leicht anderen Struktur aus:

/opt/ghost
`-- content
    |-- apps
    |-- config.js
    |-- data
    |   `-- ghost.db
    |-- images
    `-- themes

Wer jetzt die Verzeichnisse entsprechend kopiert bzw. verschoben hat (wenn ein Verzeichnis noch nicht existiert, muss es nicht angelegt werden.), muss anschließend noch den neuen Mountpunkt des Volumes beachten und die die Konfigurationsdatei anpassen. Der Mountpunkt für das Volume im Docker Container hat sich nämlich geändert und muss entsprechend angepasst werden. Der neue Mountpunkt liegt so nicht mehr unter /ghost-override sondern unter /var/lib/ghost. In der Konfigurationsdatei wird jetzt noch unter production die Zeile

filename: path.join(__dirname, '/content/data/ghost.db')

durch

filename: path.join(__dirname, '/data/ghost.db')

ersetzt. Dazu kommt, dass in diesem Image auch noch die Umgebung für node.js angegeben werden muss. Dies geschieht mit dem Parameter -e NODE_ENV=production.

Anschließend kann der alte Docker Container gestoppt werden und der neue mit folgendem Befehl gestartet werden:

docker run -p 127.0.0.1:8800:2368 -e NODE_ENV=production -v /opt/ghost/content:/var/lib/ghost ghost

In Zukunft können Updates dann einfach so eingespielt werden, dass der alte Container gestoppt und der obige Befehlt wieder ausgeführt wird. Die Daten bleiben dann dank Volume erhalten.