Cloudpower für WordPress

Bootstrapping

Neu angelegte Amazon EC2-Instanzen werden mit einem „Amazon Machine Image“ (AMI) bespielt. Ähnlich wie bei Docker Hub gibt es AWS Images in den Geschmacksrichtungen öffentlich, privat, kostenpflichtig, kostenlos oder direkt vom Hersteller. Empfehlen kann ich das Amazon Linux AMI. Es ist stabil, gratis und stellt zusätzliche Installationspakete bereit. Leider enthält das zur Zeit aktuelle AMI 2016.03 die veraltete Docker Version 1.9.1.

Um die aktuelle Docker Version nutzen zu können, verwende ich ein Ubuntu AMI und installiere Docker „manuell“. Sollte das nächste Amazon Linux AMI eine aktuelle Docker Version bekommen, dann würde ich dieses AMI bevorzugen und die Installation über YUM erledigen.

Alternativ kann natürlich auch jedes beliebige andere Image genutzt werden, Minimalanforderung für die Container sind Docker 1.10.3 und Docker-Compose 1.6.2.

 

Das Shellskript

bootstrap.sh“ ist ein Shellskript. Nichts weiter, absolut Low-Tech. Der Inhalt beschränkt sich auf:

(1) Warten auf eine Internetverbindung
(2) Docker installieren
(3) Docker-Compose installieren
(4) Container starten

 

Die Container

Für das Demo nutze ich die Standard WordPress und MariaDB Container aus dem Docker Hub. Die Container werden wieder über Docker-Compose gestartet. Hinzugefügt habe ich noch die Restart Policy „always“ (Zeilen 10 und 24), damit werden die Container bei einem Docker daemon start automatisch mitgestartet. Das ist sehr praktisch beim Serverneustart.

docker-compose.yml

version: '2'
services:
  mariadb:
    environment:
      - MYSQL_ROOT_PASSWORD=top_secret
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wp_user
      - MYSQL_PASSWORD=wp_password
    image: mariadb:10.1.13
    restart: always
    volumes:
      - volume_mariadb:/var/lib/mysql
  wordpress:
    environment:
      - WORDPRESS_DB_HOST=mariadb:3306
      - WORDPRESS_DB_NAME=wordpress
      - WORDPRESS_DB_USER=wp_user
      - WORDPRESS_DB_PASSWORD=wp_password
    image: wordpress:4.5.1-apache
    links:
      - mariadb
    ports:
      - 80:80
    restart: always
    volumes:
      - volume_wordpress:/var/www/html/wp-content/uploads
volumes:
  volume_mariadb:
    driver: local
  volume_wordpress:
    driver: local