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.
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