Docker Beispiel Silverstripe CMS

Docker Beispiel Silverstripe CMS

Docker Hub

Docker Hub liefert uns bereits einige passende Images mit denen wir unsere Container Landschaft aufsetzen können.

Nach anderen oder aktuelleren Images kann direkt auf der Webseite von Docker Hub gesucht werden.

 

Datenbank Image

Für unser Projekt verwenden wir MariaDB als Datenbank. MariaDB basiert sozusagen auf MySQL und kann daher problemlos für alle MySQL Projekte verwendet werden. MariaDB ist frei unter der GNU GPL Lizenz.

Auf Docker Hub gibt es für MariaDB ein offizielles Image. Offizielle Images sind meist besonders gut beschrieben und bieten eine Vielzahl an Einstellungsmöglichkeiten.

Wir können das Image via

docker pull mariadb

in unsere Docker Repository ziehen.

 

Datenbank Container

Danach können wir daraus einen Container starten. Wir setzen eine Verlinkung auf einen zuvor am Rechner angelegten Ordner - damit bleiben die Daten auch nach dem abschalten des Containers weiterhin erhalten. Zusätzlich setzen wir das Root Passwort, leiten den exposeden Port vom Container auf den selben Port nach aussen weiter und geben dem Container einen Namen. Als Version verwenden wir die letzte stable Version vom MariaDB.

docker run -d 
-v /Users/MeinUserName/Dataspace/mariadb:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=root 
-p 3306:3306 
--name ss4mariadb 
mariadb:10.3.11-bionic

 

Verbindung testen

Um nun die Verbindung zu testen, können wir Sequel Pro für macOS verwenden. Sequel Pro ist kostenlos und einfach zu installieren. 

Nach der Installation können wir mit den nachstehenden Angaben die Verbindung prüfen:

Name: Localhost MariaDB
Host: 127.0.0.1
Benutzer: root
Passwort: root

Den Rest einfach leer lassen das es die Standardeinstellungen wiederspiegelt.  Anschließend den Button "Verbindung testen" drücken.

Wenn die Verbindung erfolgreich war, können wir nun den Container für den Webserver starten.

 

Webserver Image

Leider gibt es vom Silverstripe kein offizielles Docker Image. Nichts desto trotz wird das Image von brettt89/silverstripe-web zumindest laut Github teilweise von Silverstripe verwaltet. 

Das Image enthält Apache, PHP und enthält eine vergleichbar gute Dokumentation.

Das Image kann via

docker pull brettt89/silverstripe-web

in unsere Docker Repository gezogen werden.

 

Webserver Container

Wir möchten nun einen Webserver Container starten und auch hier auf externe Daten der Webseite zeigen um sie außerhalb zu bearbeiten und zu behalten. Wir leiten den exposden Standardport von 80 im Container auf 80 weiter und können somit im Anschluss die Webseite via localhost aufrufen. Wir mappen den internen html Ordner mit unserem Projekt Folder und verlinken die Datenbank. Da es sich nicht um eine MySql Datenbank handelt müssen wir auch hier den Namen der Datenbank die wir ss4mariadb genannt haben auf :mysql exposen. Wir geben auch hier dem Container einen namen und verwenden als Image Version - 7.1-alpine.

docker run 
-p 80:80 
-v /Users/MeinUserName/Workspace/Silverstripe/bitcoin-atm-locator:/var/www/html 
--link ss4mariadb:mysql 
--name project_btc_atm 
brettt89/silverstripe-web:7.1-alpine

Wie im Command ersichtlich ist die Reihenfolge nicht vorgegeben.

 

Silvertripe Environment .env

Innerhalb der .env Datei unseres Projekte müssen wir zur korrekten Verbindung den Datenbankserver ss4mariadb nennen.

SS_DATABASE_SERVER="ss4mariadb" 

 

Docker Compose

Anhand der gewonnen Informationen können wir daraus nun ein Docker Compose File generieren:

version: '3.2'

services:
  mariadb:
    image: mariadb:10.4.2
    restart: always
    container_name: ss4mariadb
    ports:
      - 3306:3306
    networks:
      - silverstripe
    volumes:
      - /Users/rolandschellhorn/Dataspace/${DATABASE_FOLDER}:/var/lib/mysql:rw,cached

  silverstripe:
    depends_on:
      - mariadb
    image: brettt89/silverstripe-web:7.1-alpine
    restart: always
    container_name: project_btc_atm
    ports:
      - 8080:80
    networks:
      - silverstripe
    volumes:
      - /Users/rolandschellhorn/Workspace/Silverstripe/${PROJECT_FOLDER}:/var/www/html:rw,cached

networks:
  silverstripe:
    driver: bridge

Das Environment File erweitern wir mit:

# Docker
PROJECT_FOLDER=project_name
DATABASE_FOLDER=mariadb
MYSQL_ROOT_PASSWORD=root
Pixelparker Logo
Autor
pixelparker
Weitere Artikel die Sie interessieren könnten
DigitalOcean
DigitalOcean
Häufige Probleme mit DigitalOcean.
Docker Beispiel Silverstripe CMS
Docker Beispiel Silverstripe CMS
Die lokale Entwicklung von Silverstripe kann über die Container Plattform Docker unproblematisch und einfach erstellt werden. Neben dem CLI Setup erstellen wir uns auch eine vereinfachte Compose Version.
Docker Compose
Docker Compose
Wir listen die Docker Compose grundlegenden Bezeichner und erstellen ein Multi-Container Beispiel mit Wordpress und MariaDB.
Docker Networks
Docker Networks
Docker Datenvolumen
Docker Datenvolumen
Docker Applikation ausliefern
Docker Applikation ausliefern
Dockerized Applikationen ausführen
Dockerized Applikationen ausführen
OpenFaaS Cloud Bootstrap
OpenFaaS Cloud Bootstrap
OpenFaaS Cloud macht CI / CD besonders einfach und versteckt die Komplexität dahinter.
Openfaas Digitalocean Droplet
Openfaas Digitalocean Droplet
Das OpenFaaS Droplet auf DigitalOcean zum schnellen Setup und Startup!