Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Docker Entwicklungsumgebung für TYPO3 mit xdebug

2,092 views

Published on

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.

  • Be the first to comment

  • Be the first to like this

Docker Entwicklungsumgebung für TYPO3 mit xdebug

  1. 1. Real Values. 3.
  2. 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
  3. 3. Real Values. Alexander Bohndorf <bohndorf@sitegeist.de> TYPO3 Entwicklungsumgebung mit Docker
  4. 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. 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. 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.
  7. 7. Real Values. Kannst Du mal flux eine TYPO3-Demo aufsetzen?
  8. 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
  9. 9. Real Values. Docker Images laden $ docker pull martinhelmich/typo3 (506 MB) $ docker pull mariadb:latest (394 MB)
  10. 10. Real Values. Datenbank starten $ docker run -d --name typo3-db -e MYSQL_ROOT_PASSWORD=mysecretpassword -e MYSQL_USER=typo3 -e MYSQL_PASSWORD=mysecretpassword -e MYSQL_DATABASE=typo3 mariadb:latest --character-set-server=utf8 --collation-server=utf8_unicode_ci
  11. 11. Real Values. TYPO3 starten $ docker run -d --name typo3-web --link typo3-db:db -p 80:80 martinhelmich/typo3:8.7
  12. 12. Real Values. 456 Zeichen um TYPO3 zu starten
  13. 13. Real Values. Geht besser: docker-compose docker-compose.yml version: '2' services: typo3-web: image: martinhelmich/typo3:8.7 ports: - "80:80" depends_on: - typo3-db
  14. 14. Real Values. Geht besser: docker-compose services: typo3-db: image: mariadb:latest environment: - MYSQL_ROOT_PASSWORD=mysecurepassword - MYSQL_USER=typo3 - MYSQL_PASSWORD=mysecurepassword - MYSQL_DATABASE=typo3 command: > --character-set-server=utf8 --collation-server=utf8_unicode_ci
  15. 15. Real Values. Was bleibt? $ git clone https://github.com/sitegeist/typo3_demo.git . $ docker-compose up -d
  16. 16. Real Values. 76 Zeichen um TYPO3 zu starten
  17. 17. Real Values. Docker Dir eine TYPO3 Entwicklungsumgebung
  18. 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. 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. 20. Real Values. PHP Container anpassen $ nano etc/php/development.ini $ docker-compose stop $ docker-compose build app $ docker-compose up -d
  21. 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!
  22. 22. Real Values. Installation von TYPO3 etc/environment.yml docker-compose.yml
  23. 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. 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
  25. 25. Real Values. Datenbank persistieren docker-compose.yml anpassen mysql: build: context: docker/mysql/ ports: - 13306:3306 volumes: - ./data/mysql:/var/lib/mysql volumes_from: - storage env_file: - etc/environment.yml - etc/environment.development.yml Verzeichnis anlegen $ mkdir -p data/mysql
  26. 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. 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
  28. 28. Real Values. Fragen? Fragen!
  29. 29. Real Values. Alexander Bohndorf <bohndorf@sitegeist.de> Remote Debugging von Extbase Extensions
  30. 30. Real Values. xdebug Konfiguration für Linux Hosts etc/php/development.ini ; XDebug xdebug.remote_enable = 1 xdebug.remote_connect_back = on xdebug.idekey = "PHPSTORM" xdebug.cli_color = 1 xdebug.max_nesting_level = 1000
  31. 31. Real Values. xdebug Konfiguration für MacOS etc/php/development.ini ; XDebug xdebug.remote_enable = 1 xdebug.remote_connect_back = 0 # since docker 17.06 xdebug.remote_host = docker.for.mac.localhost xdebug.idekey = "PHPSTORM" xdebug.cli_color = 1 xdebug.max_nesting_level = 1000
  32. 32. Real Values. Bookmarklets im Browser einrichten https://www.jetbrains.com/phpstorm/marklets/
  33. 33. Real Values. PhpStorm lauschen lassen (xdebug Server aktivieren)
  34. 34. Real Values. PhpStorm: Path Mapping
  35. 35. Real Values. PhpStorm: Path Mapping für docroot /app/web
  36. 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
  37. 37. Real Values. Fragen? Fragen!
  38. 38. Real Values. Vielen Dank! Alexander Bohndorf <bohndorf@sitegeist.de>

×