Ghost im Container

Ghost im Container
Photo by Tandem X Visuals / Unsplash

Ghost in einem Docker-Container zu betreiben ist eine spannende Herausforderung. Zwar ist der Weg dahin recht gut dokumentiert, man fällt aber doch hin und wieder auf Kleinigkeiten rein, die einen verzweifeln lassen können.

Wie man Docker installiert habe ich hier beschrieben. Eine einfache Container und Stack-Verwaltung lässt sich hiermit realisieren. Darauf aufbauend können wir einen ersten Stack bauen. Wer das ganze über die CLI machen möchte, auch kein Problem. Der Weg ist fast identisch.

Zuerst brauchen wir eine docker-compose.yaml mit allen nötigen Informationen:

services:
  ghost:
    image: ghost
    restart: always
        ports:
          - 8080:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: <yoursupersecretpassword>
      database__connection__database: ghost
      # this url value is just an example, and is likely wrong for your environment!
      url: https://www.yourdomain.de
      # ghost smtp configuration
      mail__from: ${MAIL_FROM}
      mail__transport: ${MAIL_TRANSPORT}
      mail__options__service: ${MAIL_SERVICE}
      mail__options__host: ${MAIL_HOST}
      mail__options__port: ${MAIL_PORT}
      mail__options__secureConnection: ${MAIL_SECURE_CONNECTION}
      mail__options__auth__user: ${MAIL_USER}
      mail__options__auth__pass: ${MAIL_PASSWORD}
      # contrary to the default mentioned in the linked documentation, this image defaults to 
      # NODE_ENV=production (so development mode needs to be explicitly specified if desired)
      #NODE_ENV: development
    volumes:
      - /path/to/your/persistent/storage/or/volume:/var/lib/ghost/content
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: <yoursupersecretpassword>
    volumes:
      - /path/to/your/persistent/storage/or/volume:/var/lib/mysql

Wie man sehen kann, gibts im environment: Teil ein paar Variablen. Die füllen wir dann mit den benötigten Daten über ein .env-File:

MAIL_SERVICE=smtp
MAIL_TRANSPORT=SMTP
MAIL_USER=user@youremaildomain.de
MAIL_PASSWORD=<yoursupersecretpassword>
MAIL_HOST=mail.youremailhost.de
MAIL_PORT=587
MAIL_SECURE_CONNECTION=false
MAIL_FROM=NoReply <no-reply@youremaildoman.de>

Denkt daran eure Informationen an den richtigen Stellen anzupassen (Passwörter, eigene Domain, etc.). Dann kanns auch schon los gehen:

docker-compose up -d
# oder
# docker compose up -d

Wenn ihr das Ganze in dockge kippen wollt, füllt dazu auf der rechten Seite die beiden Bereiche aus und startet den Stack. Ghost ist dann unter http://www.yourdomain.de:8080 erreichbar und kann dann eingerichtet werden.

Powered by netcup.com