SlideShare ist ein Scribd-Unternehmen logo
Real Values.
3.
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
Real Values.
Alexander Bohndorf <bohndorf@sitegeist.de>
TYPO3 Entwicklungsumgebung mit Docker
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
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)
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.
Real Values.
Kannst Du mal flux eine TYPO3-Demo aufsetzen?
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
Real Values.
Docker Images laden
$ docker pull martinhelmich/typo3 (506 MB)
$ docker pull mariadb:latest (394 MB)
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
Real Values.
TYPO3 starten
$ docker run -d 
--name typo3-web 
--link typo3-db:db 
-p 80:80 
martinhelmich/typo3:8.7
Real Values.
456 Zeichen
um TYPO3 zu starten
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
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
Real Values.
Was bleibt?
$ git clone https://github.com/sitegeist/typo3_demo.git .
$ docker-compose up -d
Real Values.
76 Zeichen
um TYPO3 zu starten
Real Values.
Docker Dir eine TYPO3 Entwicklungsumgebung
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
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/
Real Values.
PHP Container anpassen
$ nano etc/php/development.ini
$ docker-compose stop
$ docker-compose build app
$ docker-compose up -d
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!
Real Values.
Installation von TYPO3 etc/environment.yml
docker-compose.yml
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
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
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
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
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
Real Values.
Fragen? Fragen!
Real Values.
Alexander Bohndorf <bohndorf@sitegeist.de>
Remote Debugging von Extbase Extensions
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
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
Real Values.
Bookmarklets im Browser einrichten
https://www.jetbrains.com/phpstorm/marklets/
Real Values.
PhpStorm lauschen lassen (xdebug Server aktivieren)
Real Values.
PhpStorm: Path Mapping
Real Values.
PhpStorm: Path Mapping für docroot
/app/web
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
Real Values.
Fragen? Fragen!
Real Values.
Vielen Dank! Alexander Bohndorf <bohndorf@sitegeist.de>

Weitere ähnliche Inhalte

Was ist angesagt?

Web-Services mit Go
Web-Services mit GoWeb-Services mit Go
Web-Services mit Go
Sebastian Harl
 
Introduction to the command line
Introduction to the command lineIntroduction to the command line
Introduction to the command line
steffenbauer
 
Inside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddlerInside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddler
Max Nowack
 
Typo3 und Varnish
Typo3 und VarnishTypo3 und Varnish
Typo3 und Varnish
Oliver Thiele
 
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas LangeOSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
NETWAYS
 
GNU Bourne Again SHell
GNU Bourne Again SHellGNU Bourne Again SHell
GNU Bourne Again SHell
Fabian Becker
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
Christian Colbach
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3marco-huber
 
FMK2014: FileMaker Plugin erzeugen by Christian Schmitz
FMK2014: FileMaker Plugin erzeugen by Christian SchmitzFMK2014: FileMaker Plugin erzeugen by Christian Schmitz
FMK2014: FileMaker Plugin erzeugen by Christian Schmitz
Verein FM Konferenz
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit Plone
Jens Klein
 
Synology Workshop07 06
Synology Workshop07 06Synology Workshop07 06
Synology Workshop07 06
Jens-Christian Fischer
 
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
NETWAYS
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
Gerhard Lausser
 
Dancer und DBIx::Class
Dancer und DBIx::ClassDancer und DBIx::Class
Dancer und DBIx::Class
LinuXia
 
Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex
Jan Gehring
 
PHAR better Tools
PHAR better ToolsPHAR better Tools
PHAR better Tools
PHP in DD
 
SysDig Metriken zentralisieren
SysDig Metriken zentralisierenSysDig Metriken zentralisieren
SysDig Metriken zentralisieren
inovex GmbH
 
Ceph Introduction @GPN15
Ceph Introduction @GPN15Ceph Introduction @GPN15
Ceph Introduction @GPN15
m1no
 

Was ist angesagt? (18)

Web-Services mit Go
Web-Services mit GoWeb-Services mit Go
Web-Services mit Go
 
Introduction to the command line
Introduction to the command lineIntroduction to the command line
Introduction to the command line
 
Inside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddlerInside HTTP: Webdebugging mit FIddler
Inside HTTP: Webdebugging mit FIddler
 
Typo3 und Varnish
Typo3 und VarnishTypo3 und Varnish
Typo3 und Varnish
 
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas LangeOSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
OSDC 2010 | FAI - ein Projekt wird 10 Jahre alt by Thomas Lange
 
GNU Bourne Again SHell
GNU Bourne Again SHellGNU Bourne Again SHell
GNU Bourne Again SHell
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
 
FMK2014: FileMaker Plugin erzeugen by Christian Schmitz
FMK2014: FileMaker Plugin erzeugen by Christian SchmitzFMK2014: FileMaker Plugin erzeugen by Christian Schmitz
FMK2014: FileMaker Plugin erzeugen by Christian Schmitz
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit Plone
 
Synology Workshop07 06
Synology Workshop07 06Synology Workshop07 06
Synology Workshop07 06
 
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
OSMC 2021 | SNMP Monitoring mit Prometheus / OIDs dynamisch auswählen und im ...
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
 
Dancer und DBIx::Class
Dancer und DBIx::ClassDancer und DBIx::Class
Dancer und DBIx::Class
 
Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex
 
PHAR better Tools
PHAR better ToolsPHAR better Tools
PHAR better Tools
 
SysDig Metriken zentralisieren
SysDig Metriken zentralisierenSysDig Metriken zentralisieren
SysDig Metriken zentralisieren
 
Ceph Introduction @GPN15
Ceph Introduction @GPN15Ceph Introduction @GPN15
Ceph Introduction @GPN15
 

Ähnlich wie Docker Entwicklungsumgebung für TYPO3 mit xdebug

Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
agilemethoden
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
B1 Systems GmbH
 
The pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersThe pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developers
FDeitelhoff
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Syahri Ramadhan
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
inovex GmbH
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
Nane Kratzke
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
Nicholas Dille
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
gedoplan
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
MongoDB
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
B1 Systems GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
Josef Adersberger
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
QAware GmbH
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
enpit GmbH & Co. KG
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
Frank Schmittlein
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
Andreas Koop
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
Ulrich Krause
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
Ulrich Krause
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
remigius-stalder
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
Philipp Kropp
 

Ähnlich wie Docker Entwicklungsumgebung für TYPO3 mit xdebug (20)

Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
The pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersThe pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developers
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
 

Docker Entwicklungsumgebung für TYPO3 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
  • 3. Real Values. Alexander Bohndorf <bohndorf@sitegeist.de> TYPO3 Entwicklungsumgebung mit Docker
  • 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.
  • 7. Real Values. Kannst Du mal flux eine TYPO3-Demo aufsetzen?
  • 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. Real Values. Docker Images laden $ docker pull martinhelmich/typo3 (506 MB) $ docker pull mariadb:latest (394 MB)
  • 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. Real Values. TYPO3 starten $ docker run -d --name typo3-web --link typo3-db:db -p 80:80 martinhelmich/typo3:8.7
  • 12. Real Values. 456 Zeichen um TYPO3 zu starten
  • 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. 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. Real Values. Was bleibt? $ git clone https://github.com/sitegeist/typo3_demo.git . $ docker-compose up -d
  • 16. Real Values. 76 Zeichen um TYPO3 zu starten
  • 17. Real Values. Docker Dir eine TYPO3 Entwicklungsumgebung
  • 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!
  • 22. Real Values. Installation von TYPO3 etc/environment.yml docker-compose.yml
  • 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
  • 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. 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
  • 29. Real Values. Alexander Bohndorf <bohndorf@sitegeist.de> Remote Debugging von Extbase Extensions
  • 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. 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. Real Values. Bookmarklets im Browser einrichten https://www.jetbrains.com/phpstorm/marklets/
  • 33. Real Values. PhpStorm lauschen lassen (xdebug Server aktivieren)
  • 35. Real Values. PhpStorm: Path Mapping für docroot /app/web
  • 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
  • 38. Real Values. Vielen Dank! Alexander Bohndorf <bohndorf@sitegeist.de>