Vortrag auf dem TYPO3 Meetup 3 am 13.11.2017 bei sitegeist
über Docker Umgebungen für TYPO3 zu Präsentationszwecken und als Entwicklungsumgebung mit xdebug.
2. Real Values.
Agenda
● 19:00 Welcome
● Vortrag 1: TYPO3 Entwicklungsumgebung mit Docker
● Pause mit Pizza & Bier in der Rehlounge (ca. 30 Minuten)
○ eure Themenvorschläge ans Board und Voting
○ eure Angebote für Vorträge ans Board mit Kontaktdaten
● Vortrag 2: Remote Debugging von Extbase Extensions
4. Real Values.
Ziele
TYPO3-Demosystem
● für Präsentationen etc.
● Black Box, minimaler Installationsaufwand
Entwicklungsumgebung für TYPO3 in kürzester Zeit
● unter Mac und unter Linux
● vielleicht auch noch unter Windows 10 (Creators Update)
● PHP-Laufzeitumgebung für Betrieb von TYPO3
● kein TYPO3-Image als Black Box
5. Real Values.
Was braucht man für docker (Notebook/PC) ?
● Hardware
○ 16 GB RAM mindestens
○ SSD (256+ GB)
○ CPU muss Virtualisierung können
● Betriebssystem
○ Linux (optimal)
○ Mac (gut)
○ Windows 10 (Creators Update) (wird sich zeigen)
● Software
○ docker
○ docker-compose
○ optional: git
○ optional: composer (und dafür PHP)
6. Real Values.
Was muss das Docker-Setup mitbringen?
● PHP 7 inkl. diverser Bibliotheken
● GIT
● composer
● Webserver (z.B. Apache)
● Maria DB (oder MySQL)
● SSL
● Mailversendung
● Debugging
● Tools wie Image Magick usw.
8. Real Values.
Public TYPO3 Docker Images - Das Leichtgewicht
martinhelmich/typo3
● leichtgewichtig und gut verständlich
● optimal für eine schnelle Demo eines frischen TYPO3-Systems
● nicht optimal zum Entwickeln
● kein docker-compose setup
● nur TYPO3-Container ohne Datenbank-Container
18. Real Values.
Public TYPO3 Docker Images - Das Komplettpaket
github.com/webdevops/TYPO3-docker-boilerplate
● sehr umfangreich
● gute Dokumentation
● optimal als Entwicklungsumgebung für TYPO3 Projekte
● komplettes docker-compose setup
● diverse optionale Zusatzdienste
○ SolR
○ Redis
○ PhpMyAdmin
○ MySQL, MariaDB, PostgreSQL, PerconaDB
● komfortable make scripts
19. Real Values.
PHP Container starten
$ git clone --recursive
https://github.com/webdevops/TYPO3-docker-boilerplate.git
projectname
$ cd projectname
$ cp docker-compose.development.yml docker-compose.yml
$ docker-compose up -d
http://localhost:8000/ oder https://localhost:8443/
20. Real Values.
PHP Container anpassen
$ nano etc/php/development.ini
$ docker-compose stop
$ docker-compose build app
$ docker-compose up -d
21. Real Values.
TYPO3 Projekt aufsetzen
Variante 1
$ make create typo3
Variante 2 (lokal mit composer)
$ rm -f app/.gitkeep
$ composer create-project typo3/cms-base-distribution app/
$ touch app/web/FIRST_INSTALL app/.gitkeep
composer im Container auszuführen, ist sicherer wegen der PHP-Version!
23. Real Values.
TYPO3 Introduction Package mit composer installieren
Im Host: In den Container wechseln (analog zu SSH in virtuelle Maschine)
$ make bash
Im Container
$ composer update
$ composer require typo3/cms-introduction
Extension Manager im Browser
Extension introduction aktivieren
24. Real Values.
Container runterfahren
Datenbank sichern
$ make mysql-backup
Container runterfahren (stoppen und löschen):
$ docker-compose down
wieder hochfahren
$ docker-compose up -d
Datenbank wiederherstellen
$ make mysql-restore
26. Real Values.
Weitere Dienste
● PhpMyAdmin
○ lieber DB-Zugriff direkt in PhpStorm auf Port 13306
● Mailhog
○ Demo http://localhost:8025/
● SolR
● Redis
● Memcached
● elasticsearch
● FTP-Server
27. Real Values.
Probleme und Lösungen für große Projekte
● Gigabytes an Assets
○ Netzwerk-Mounts auf Host als Volumes in Containern
● Initialer Datenbankinhalt
● Performance-Issues auf MacOS
○ https://docs.docker.com/docker-for-mac/osxfs-caching/
○ :cached oder :delegated an Volume-Definition hängen
● Dateirechte und Benutzer
○ Prozesse unter Linux
● Datenmüll von Docker
○ $ docker volume prune
● Akzeptanztests
36. Real Values.
Debugging Probleme und Lösungen
● PhpStorm reagiert nicht auf Debugger
○ lauscht PhpStorm?
○ sind die Breakpoints aktiv oder deaktiviert?
○ liefert TYPO3 eine gecachte Seite aus? no_cache=1 oder Caching generell deaktivieren
○ sind die Path Mappings in PHP Storm korrekt?
○ ist das XDEBUG_SESSION cookie gesetzt und hat den Wert PHPSTORM? (Bookmarklet geklickt?)
○ xdebug settings für OS korrekt? (Unterschiede zwischen Docker für Linux/MacOS)
○ PHP mit xdebug Erweiterung kompiliert?
● Stop an erster Seite aber nicht am Breakpoint
○ PhpStorm: Settings/PHP/Servers, Path Mappings korrekt für gesamtes Docroot?
○ xdebug_break() temporär einbauen
○ PhpStorm: Run/Break at first line in PHP scripts aktivieren