Ergebnis 1 bis 16 von 16

Thema: Schritt für Schritt: Docker als XAMPP Alternative

  1. #1
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard Schritt für Schritt: Docker als XAMPP Alternative

    Wer bisher unter Windows mit XAMPP [1] für die lokale Entwicklung mit Contao 4.x gearbeitet hat:
    Hier eine alternative Vorgehensweise mit Docker Images/Container.

    Grundsätzlich gehen die Angaben von einer funktionierenden Docker Umgebung aus - zumeist ein einfacher Installations-Aufruf.
    Wer die "Docker Toolbox" mit Windows nutzt sollte zuvor [2|3|4] gelesen haben.

    Als Terminal/Konsole für die folgenden Beispiele unter Windows setze ich GitBash [5] ein.
    Wer die "Docker Toolbox" nutzt kann auch das "Docker Quickstart Terminal" nutzen.

    Übersicht:



    [1] Schritt für Schritt: Installation 4.X mit Windows7 u. Xampp 7.2.1
    [2] Schritt für Schritt: Docker Nutzung
    [3] Die Docker-VM in einer anderen Partition nutzen: "D:\..."
    [4] Die Docker-VM optimieren (f. docker volumes auf Laufwerk "D:" u. Hauptspeicher erweitern)
    [5] GitBash für Windows
    Geändert von Franko (19.12.2018 um 18:56 Uhr)
    Carpe diem ...

  2. #2
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Short&Sweet

    Damit die unteren, detaillierten Infos nicht abschreckend wirken - hier eine Kurzzusammenfassung um lokal mit einer o. mehreren Webseiten zu arbeiten.
    Je Webseite erstellt man sich ein separates Verzeichnis mit unterer Verzeichnisstruktur/Dateien, wechselt auf der Konsole in das jeweilige Verzeichnis und dann:

    • In der Console: Erstmalig "docker-compose up -d" später dann "docker-compose start"
    • Mit Contao arbeiten - Im Anschluß:
    • In der Console: "docker-compose stop"

    ...

    Oder Short'nSweet 2:

    Inkl. vollständiger Herstellung einer Contao Installation und anschließendem Backup:

    • docker-compose start
    • bash restore.sh
    • Mit Contao arbeiten ...
    • bash backup.sh
    • docker-compose stop

    ... siehe unten ...

    ... und wenn man mal richtig Mist gebaut hat: "docker-compose down" / "docker volume prune" / "docker network prune" ...
    Auf Ihren Host ( z.B. Ihr Windows ) hat das alles keinen Einfluß - dank Docker ...
    Geändert von Franko (19.12.2018 um 18:57 Uhr)
    Carpe diem ...

  3. #3
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Begrifflichkeiten

    Ein Docker Image beinhaltet eine konkrete Funktionalität, z.B. mysql in einer bestimmten Version.
    Ein Docker Image kann über eine "Dockerfile" Datei erzeugt werden oder man lädt sich bestehende Docker Images über Docker-Hub [1].

    Mit einem Docker Image kann nicht direkt gearbeitet werden. Zur Nutzung des Docker Image erzeugt man einen Docker Container - zunächst ein genaues Abbild des jeweiligen Docker Image.
    Zur Nutzung des Docker Container muß dieser zunächst gestartet werden um dann z.B. in mysql bel. Datenbanken und Tabellen zu erzeugen. Im Anschluß kann der Container wieder gestoppt werden.
    Ein gestoppter Container existiert weiterhin und alle Änderungen bleiben erhalten. Erst wenn der Container gelöscht wird gehen auch die darin enthaltenen Inhalte verloren -
    nicht aber das entsprechende Docker Image.
    Es können mehrere, unterschiedliche Container von einem Docker Image herangezogen werden.

    Über eine "docker-compose.yml" Datei können mehrere Container gleichzeitig erzeugt und konfiguriert werden.
    Die Docker Conatiner können in Abhängigkeit gesetzt werden und miteinander über ein internes Docker Network kommunizieren.

    Ein Container kann Docker Volumes [2] nutzen. Hierüber werden Verzeichnisse zwischen laufendem Docker Container und dem Host ( z.B. ein Windows Verzeichnis ) synchronisiert.
    Wenn ein Container gestoppt o. gelöscht wird bleiben hierdurch die Dateien in dem Verzeichnis auf dem Host erhalten.

    [1] Docker-Hub
    [2] Docker Volumes
    Geändert von Franko (19.12.2018 um 16:47 Uhr)
    Carpe diem ...

  4. #4
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Vorbereitungen

    Auf Github [1] bzw. Docker-Hub [2] findet man fertige Docker Images von z.B. ctsmedia mit denen man sofort loslegen könnte.

    Basierend auf [1] habe ich jedoch Anpassungen vorgenommen. So wollte ich z.B nicht mit den ctsmedia Scripten arbeiten,
    sondern Backup und Restore Vorgehensweisen mit Docker Mitteln lösen. Weiterhin wird eine Docker ".env" Datei zur einfachen Konfiguration benutzt.
    Die Infos auf [1] sind daher weitgehend obsolet - Bitte weiterlesen ...

    Man benötigt lediglich ein Verzeichnis je Webseite/Projekt mit folgender Struktur und drei Dateien:

    Verzeichnisstruktur

    • D:\tutorial
    • D:\tutorial\.env
    • D:\tutorial\Dockerfile
    • D:\tutorial\docker-compose.yml
    • D:\tutorial\src\files
    • D:\tutorial\src\templates
    • D:\tutorial\_backup


    .env
    https://gist.github.com/fkaminski/00...9e277e1a5b9281

    Dockerfile
    https://gist.github.com/fkaminski/55...bb819f595c30ce

    docker-compose.yml
    https://gist.github.com/fkaminski/4d...c293aeb1575fda


    Wichtig: Konventionen
    Die vorhandenen ctsmedia Images [3] bzw. ein über das "Dockerfile" selbst erzeugtes Image setzen den User "www-data" für das Verzeichnis "/var/www/share/project" im jeweiligen PHP/Contao Container.
    In diesem Verzeichnis befinden sich dann die Contao Dateien.

    Wenn man mit Docker Containern arbeitet ist man normalerweis als User "root" unterwegs.
    Zur Vermeidung von Zugrifssrechten sollte daher als User "www-data" gearbeitet werden!


    [1] GitHub: ctsmedia docker-contao
    [2] Docker-Hub: ctsmedia Repo Info
    [3] Docker-Hub: ctsmedia docker-contao Tags
    Geändert von Franko (19.12.2018 um 19:00 Uhr)
    Carpe diem ...

  5. #5
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Eigenes Docker Image erstellen und nutzen

    Starten Sie Ihr Terminal ( ich nutze GitBash [1] unter Windows ) und wechseln in das obige Verzeichnis.

    Wir erstellen einmalig ein Docker Image über das "Dockerfile".
    Sie müssen lediglich den Image Namen und die zu installierende Contao Version angeben - Also etwa:

    Code:
     
    docker build -t my/contao:4.4.32 --build-arg CONTAO_VERSION=4.4.* .
    Das kann etwas dauern - Am Ende sollten Sie ein Docker Image "my/contao:4.4.32" ...

    Code:
     
    docker image ls
    ... mit folgenden Features vorliegen haben:

    • PHP Cli Version 7.2
    • PHP mit memory_limit=-1
    • PHP Composer ( Zum Zeitpunkt war es Version 1.8 )
    • Contao LTS ( Zum Zeitpunkt war es Version 4.4.32 )
    • Contao Manager ( Zum Zeitpunkt war es Version 1.1.2 )


    Sie könnten sich z.B. auch gleich ein Image für die aktuelle Contao 4.6 Version erstellen:

    Code:
     
    docker build -t my/contao:4.6.11 --build-arg CONTAO_VERSION=4.6.* .
    Der Docker Image Name ist frei wählbar ( xyz o. myimage etc. ), das Image Tag ebenso ( 4.4 o. LTS o. LATEST etc. ).
    Da das Docker Image aber ein Abbild der Contao Version zum Zeitpunkt der Erstellung darstellt,
    sollte dies auch aus dem Namen:Tag des Docker Image eindeutig hervorgehen.


    [1] GitBash
    Geändert von Franko (19.12.2018 um 19:03 Uhr)
    Carpe diem ...

  6. #6
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Docker Container erstellen und nutzen

    Editieren Sie die nun ".env" Datei. Hier finden Sie drei Variablen vor:

    Code:
     
    CONTAO_IMAGE=my/contao:4.4.32 
    
    COMPOSE_PROJECT_NAME=website
    
    GLOBAL_PASS_NAME=devcontao
    Sie müssen lediglich die Angabe hinter CONTAO_IMAGE, entsprechend des zuvor erstellen Docker Images setzen/aktualisieren.

    Hinweis
    Sie können hier auch ein auf Docker-Hub vorhandenes ctsmedia Docker Image [1] einsetzen - z.B: ctsmedia/contao:latest
    Achten Sie dann aber darauf, das diese noch mit einem PHP memory_limit=512M laufen und im Contao Manager den Resolver nutzen müssen.

    Die beiden anderen Variablen sind optional.

    Die COMPOSE_PROJECT_NAME
    wird als Prefix für die Docker Container Namen herangezogen.
    Je Verzeichnis sollte hier der Eintrag geändert werden ( website1, website2, myprojecta usw.. ) damit eindeutige Docker Container Namen erstellt werden.

    Die GLOBAL_PASS_NAME
    wird grundsätzlich für z.B alle Angaben im Install Tool bzw. für die Datenbank ( wie DB-User / DB-Database / DB-Password ) einheitlich herangezogen.

    Im folgenden beziehe ich mich immer auf die obigen Angaben/Namen. Sollten Sie diese geändert haben - bitte entsprechend anpassen.
    Erstellen Sie die Docker Container anhand der "docker-compose.yml" mit:

    Code:
     
    docker-compose up -d
    Der erstmalige Aufruf kann es etwas dauern da, sofern noch nicht vorhanden, auch die übrigen Docker Images wie z.B der Apache Server von ctsmedia o. phpMyAdmin gezogen werden.
    Im Anschluß sollten Sie folgende, gestartete Container - entsprechend der Namen Konvention aus der ".env" vorliegen haben:

    Code:
     
    docker container ls 
    
    website.local
    website_phpMyAdmin
    website_contao
    website_db
    Sie können die Container stoppen und starten über

    Code:
     
    # Stoppt die Container
    docker-compose stop
    
    # Zeigt existierende Container
    docker container ls -a 
    
    # Startet die vorhandenen Container
    docker-compose start
    
    # Zeigt laufende Container
    docker container ls
    
    # Stopt/Löscht die laufenden Container
    docker-compose down
    
    docker container ls
    docker container ls -a 
    
    # Zeigt vorhandene Images
    docker image ls
    Wenn Sie Änderungen an der ".env" oder der "docker-compose.yml" machen, müssen Sie die Container wieder einmalig neu erstellen und starten: "docker-compose up -d"

    Solange die Container existieren bleiben alle gemachten Änderungen ( über den CM/Composer, innerhalb von Contao usw. ) erhalten.
    Erst wenn Sie die Container endgültig löschen - "docker-compose down" - sind auch Ihre bisherigen Arbeiten hinfällig.

    Hinweis Backup und Restore
    Wer ein Backup vorliegen hat könnte zu diesem Zeitpunkt eine vollständige Contao Installation wieder herstellen.
    Weitere Vorgehensweisen zum einfachen Backup und Restore - weiter unten ...


    [1] GitHub: ctsmedia docker-contao
    Geändert von Franko (21.12.2018 um 09:07 Uhr)
    Carpe diem ...

  7. #7
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Mit Contao arbeiten

    Stellen Sie sicher, das Ihre Container gestartet sind: "docker container ls" bzw. "docker-compose start"
    Starten Sie nun Ihren Browser. Normalerweise mit "localhost".
    Wer mit der "Docker Toolbox" arbeitet muß die Docker-IP Adresse nutzen:

    Code:
     
    docker-machine ip
    Bei mir daher im folgenden z.B. über den Aufruf http://192.168.99.100


    Den Contao-Manager starten

    Code:
     
    http://192.168.99.100/contao-manager.phar.php
    Der Manager sollte die korrekte PHP-CLI autom. erkennen. In der "Systemprüfung" unter "Serverkonfiguration" setzen Sie unter "Konfiguration" auf "Andere".
    Den "Composer Cloud Resolver" können Sie eigentlich deaktivieren, da unser PHP memory_limit auf -1 gesetzt ist ( s. Dockerfile ).

    Hinweis
    Haben Sie in der ".env" ein vorhandenes Docker-Hub ctsmedia Image gesetzt liegt das PHP memory_limit bei 512M und im Contao Manager muß dann der Resolver genutzt werden.
    Weiterhin wird dann für den CM der Aufruf "contao-manager.php" benötigt.


    Das Contao-Installtool

    Code:
     
    http://192.168.99.100/contao/install
    Bei der Datenbankabfrage geben Sie folgendes ein ( entsprechend der Konvention aus der ".env" ):

    • Host: db
    • Portnummer: 3306
    • Benutzername: devcontao
    • Passwort: devcontao
    • Datenbankname: devcontao


    Normalerweise setzen Sie für "Host" den Eintrag "localhost".
    Da bei der "Docker Toolbox" Nutzung kein "localhost" zur Verfügung steht tragen wir bei "Host" "db" ein.
    Das ist der Service Name unter dem mysql im internen Docker Netzwerk erreichbar ist ( s. "docker-compose.yml" ).


    phpMyAdmin

    Code:
     
    http://192.168.99.100:8080
    • Benutzername: devcontao
    • Passwort: devconato
    • Oder:
    • Benutzername: root
    • Passwort: devconato


    Entsprechend der Konvention aus der ".env" bzw. "docker-compose.yml".


    Contao templates/files Verzeichnisse
    Alle Änderungen die innerhalb von Contao in diesen Verzeichnissen gesetzt werden,
    werden mit den lokalen Host Verzeichnissen "src/templates" und "src/files" synchronisiert -
    da diese in der "docker-compose.yml" als Docker Volume gesetzt werden.

    Sie können auch direkt in diesen lokalen Verzeichnissen Änderungen vornehmen,
    die dann wieder innerhalb von Contao ( bzw. im jeweiligen Container ) zur Verfügung stehen.

    Auch wenn Sie die Container stoppen/löschen bleiben die Daten dieser beiden lokalen Verzeichnisse erhalten!
    Geändert von Franko (19.12.2018 um 13:43 Uhr)
    Carpe diem ...

  8. #8
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Mit PHP-Composer und der Konsole arbeiten

    Entsprechend der obigen Namen Konventionen heißt unser Contao/PHP Container z.B. "website_contao".
    Haben Sie in der ".env" Datei für COMPOSE_PROJECT_NAME einen anderen Eintrag gesetzt heißt Ihr Container halt anders - bitte dies bei folgenden Angaben berücksichtigen.

    Öffnen Sie Ihr Terminal ( ich nutze GitBash ), wechseln in das Projekt Verzeichnis ( hier z.B. D:\tutorial ) und falls noch nicht geschehen starten die existierenden Container mit "docker-compose start".
    Das u.a. hier benutzte PHP Image von ctsmedia [1] installiert bereits den PHP-Composer. Wir können diesen daher ohne weiteres auf der Konsole nutzen.

    Mit dem Docker "exec" Befehl können Sie sich - quasi SSH like - in einen laufenden Container einklinken:

    Code:
    docker exec -ti -u www-data website_contao bash
    Hinweis:
    Wenn Sie hier eine Ausgabe erhalten wie: "the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'"
    Dies ist bedingt durch die Auswahl während der "Git für Windows" Installation [1]. Dann probieren Sie es so:

    winpty docker exec -ti -u www-data website_contao bash

    [1] Git Konfiguration: MinTTY Git Bash

    Wichtig
    Wichtig ist hier die Option "-u www-data" (s. auch Beitrag "Vorbereitungen"). Ohne die Option sind Sie im Container als User "root" unterwegs.
    Wenn Sie als "root" User Änderungen z.B. an der "composer.json" speichern würden, kann es u.a. über den Contao-Manager zu Zugriffsproblemen führen!

    Sie befinden sich also somit im Container "website_contao" als User "www-data" im Verzeichnis "/var/www/share/project/" und können hier bel. Befehle absetzen:

    Code:
    pwd
    php -v
    php -i | grep memory_limit
    vim composer.json
    composer update
    exit
    Sie müssen nicht unbedingt direkt über die Bash-Shell des Containers arbeiten.
    Mit Docker "exec" können Sie auch einzelne Befehle in der GitBash Konsole separat ausführen:

    Code:
    docker exec -t -u www-data website_contao pwd
    docker exec -t -u www-data website_contao php -v
    docker exec -t -u www-data website_contao composer require erdmannfreunde/euf_grid:^2.2

    Kleiner Ausflug - die composer.json lokal editieren
    Manchmal kann es notwendig werden die "composer.json" manuell zu editieren. Wer dies nicht im Container via "vim" erledigen möchte - hier ein Beispiel.
    Laut dem Issue #238 [2] konnte es notwenig sein zwischenzeitlich den Eintrag

    Code:
    "conflict": {
            "doctrine/dbal": "2.9.1"
     }
    in der "composer.json" zu setzen, damit das Installtool in der Contao Version 4.4.31 wieder funktioniert.
    Wir kopieren uns die "composer.json" aus dem Container "website_contao" in das lokale Verzeichnis "_backup" mit:

    Code:
    docker cp website_contao:var/www/share/project/composer.json _backup
    In unserem lokalen Verzeichnis "_backup" existiert nun die "composer.json" und wir tragen hier die Änderung ein.
    Wir kopieren die geänderte Datei wieder in den Container und führen ein Composer update aus:

    Code:
    docker exec -u www-data website_contao cp _backup/composer.json .
    docker exec -u www-data website_contao composer update
    Hintergrund
    Wir benutzen in der ersten Zeile nicht wieder den eigentlichen "Docker cp" Befehl, da wir hierüber nicht den User "www-data" mitschleifen können.

    Stattdessen haben wir, analog z.B. zum Verzeichnis "src/templates", das Verzeichnis "_backup" in der "docker-compose.yml" als Volume eingetragen.
    Entsprechend liegt also unsere lokal geänderte Datei auch wieder im Verzeichnis "_backup" innerhalb des Container vor.

    Mit dem Befehl kopieren wir also die "composer.json" im Verzeichnis "_backup" des Containers in das Arbeitsverzeichnis "/var/www/share/project/" -
    aber halt unter dem User "www-data"!

    Dies ist entspricht dann auch der Vorgehensweise zum Backup und Restore vollständiger Contao Installation und Inhalte - siehe unten ...


    [1] GitHub: ctsmedia PHP
    [2] Installtool broken after update to 4.6.11 #238
    Geändert von Franko (19.12.2018 um 16:55 Uhr)
    Carpe diem ...

  9. #9
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Ein Backup der vollständigen Contao Installation erstellen

    Sie sind mit der lokalen Arbeit der Contao Seite fertig.
    In den lokalen Verzeichnissen "src/templates" und "src/files" sind Ihre Daten bereits permanent vorhanden.

    Wir müssen für ein Backup noch die Dateien "composer.json", "composer-lock", "app/config/parameters.yml", "system/config/localconfig.php"
    aus dem Container "website_contao" und ein Datenbank Dump aus dem Container "website_db" erstellen:

    Diese Dateien werden in das lokale Verzeichnis "_backup" kopiert, welches ebenfalls als Volume in unserer "docker-compose.yml" definiert ist.
    Öffnen Sie die GitBash Konsole und wechseln in Ihr Projekt-Verzeichnis mit den laufenden Containern:

    Code:
    docker cp website_contao:var/www/share/project/composer.json _backup
    docker cp website_contao:var/www/share/project/composer.lock _backup
    
    docker cp website_contao:var/www/share/project/app/config/parameters.yml _backup
    docker cp website_contao:var/www/share/project/system/config/localconfig.php _backup
    
    docker exec website_db mysqldump -u devcontao --password=devcontao devcontao > _backup/db_website.sql
    Im Anschluß befinden sich die Dateien ebenfalls permanent im lokalen Verzeichnis "_backup".
    Sie könnten nun die Container löschen "docker-compose down".

    Wer möchte kann sich hierzu für "GitBash" ein Bash Script erstellen oder ein ensprechendes Windows CMD/Powershell Pendant - s.a.: "Backup/Restore Automatisierung"
    Carpe diem ...

  10. #10
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Eine vollständige Contao Installation über das Backup wiederherstellen

    Sie haben ein Backup erstellt und die Container gelöscht.
    Öffnen Sie die GitBash Konsole und wechseln in Ihr Projekt-Verzeichnis. Erzeugen und starten Sie die Container mit "docker-compose up -d".

    Kopieren Sie Ihre Sicherung aus dem "_backup" Verzeichnis und importieren den Datenbank Dump:

    Code:
    docker exec -u www-data website_contao cp _backup/composer.json .
    
    docker exec -u www-data website_contao mkdir -p app/config/
    docker exec -u www-data website_contao cp _backup/parameters.yml app/config/'
    docker exec -u www-data website_contao cp _backup/localconfig.php system/config/'
    
    ###  Option 1: A composer update - will install/update extensions but possibly a wohle Contao Update too
    
    docker exec -t -u www-data website_contao composer update
    
    ### Option 2: For clearing cache only - possible extension(s) must be manually installed via CM
    
    docker exec -t -u www-data website_contao php vendor/bin/contao-console cache:clear
    docker exec -t -u www-data website_contao php vendor/bin/contao-console cache:warmup
    docker exec -t -u www-data website_contao php vendor/bin/contao-console contao:symlinks
    
    docker exec -i website_db mysql -u devcontao --password=devcontao devcontao < _backup/db_website.sql
    Cache Clear oder Composer Update
    Wenn in der "composer.json" Erweiterungen eingetragen sind müssen Sie ein composer update durchführen um diese autom. zu installieren.
    Allerdings würde damit möglicherweise auch auf eine neuere Contao Version upgedatet - Evtl. nicht was man möchte.

    Wenn Sie lediglich die "Cache Clear" Variante ausführen, müssen Sie die Erweiterungen im Anschluß noch über den Contao-Manager installieren.
    Der Contao-Manager erkennt die Einträge und weist darauf hin. Vorteil: Es wird nicht die gesamte Contao Version dabei aktualisiert.

    Im Anschluß ist Ihre Contao Version vollständig hergestellt.
    Wer möchte kann sich hierzu für "GitBash" ein Bash Script erstellen oder ein ensprechendes Windows CMD/Powershell Pendant - s.a.: "Backup/Restore Automatisierung"

    Hinweis
    Alle Angaben wurden unter Windows 7/10 Home mit der "GitBash"/"Docker Quickstart Terminal" Konsole getestet.
    Diese sollten auch für "Docker für Mac"/"Docker für Windows (Hyper-V)" Anwender funktionieren, zumal bei den "docker exec" Befehlen die Host Pfade relativ gesetzt werden.
    Konnte ich aber nicht testen.

    Einzig "Powershell" Nutzer könnten evtl. bei der mysql Import Anweisung einen Fehler ala: "Der Operator "<" ist für zukünftige Versionen reserviert." erhalten.
    Diese könnten das Datenbank Backup file dann direkt im Container sichern lassen und von dort auch dann direkt importieren mit:

    • docker exec website_db bash -c "mysqldump -u devcontao --password=devcontao devcontao > db_website.sql"
    • docker exec website_db bash -c "mysql -u devcontao --password=devcontao devcontao < db_website.sql"
    Geändert von Franko (20.12.2018 um 12:59 Uhr)
    Carpe diem ...

  11. #11
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Backup/Restore Automatisierung

    Wer mit der "GitBash" Konsole o. dem "Docker Quickstart Terminal" ( o. einer anderen Bash-Shell ) arbeitet kann folgende Bash-Scripts ( .sh ) zum Backup/Restore nutzen.
    Kopieren Sie sich die drei Dateien in Ihr Projekt Verzeichnis:

    vars.sh
    https://gist.github.com/fkaminski/7d...530f30ce505239

    backup.sh
    https://gist.github.com/fkaminski/b7...58f122e2bfdabe

    restore.sh
    https://gist.github.com/fkaminski/c5...fc5307e8913863

    Öffnen Sie die GitBash Konsole und wechseln in Ihr Projekt-Verzeichnis.

    Backup Aufruf:
    Code:
    bash backup.sh
    Restore Aufruf:
    Code:
    bash restore.sh
    oder 
    bash restore.sh -u
    Hinweis restore.sh Parameter
    Per Default Aufruf wird u.a. nur ein Contao Cache Clear/Warmup ausgeführt.

    Mit Übergabe von "bash restore.sh -u" oder "bash restore.sh --update" wird stattdessen ein "composer update" ausgeführt ( s.a.: Eine vollständige Contao Installation über das Backup wiederherstellen ).
    ( Geändert am 20.12.18 - wer eine vorherige Version hat - bitte das Gist neu herunterladen. )

    Short'nSweet 2:
    Eine bel. lokale Contao Version/Nutzung, je Projekt-Verzeichnis, mit Docker inkl. Restore/Backup könnte also so aussehen:

    • docker-compose start
    • bash restore.sh
    • Mit Contao arbeiten ...
    • bash backup.sh
    • docker-compose stop


    ...
    Geändert von Franko (21.12.2018 um 09:15 Uhr)
    Carpe diem ...

  12. #12
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Fazit und Ausblick: devilbox.org

    Die lokale Contao Nutzung mit Docker basierend auf vorhandenen, für Contao korrekt konfigurierten Images, ist nicht aufwendig.
    Anspruchsvoll ist eher die einmalige, korrekte Konfiguration von PHP, Apache, NGINX Images etc..
    Mit den hier vorgestellten, fertigen Lösungen basierend auf den ctsmedia Images kann man also gut arbeiten.

    Eine weitere Alternative wäre die devilbox.org [1].
    Das Projekt wird gut gepflegt [2] und ist detailliert dokumentiert [3].


    [1] devilbox.org
    [2] Github: devilbox
    [3] Dokumentation: devilbox
    Geändert von Franko (19.12.2018 um 13:51 Uhr)
    Carpe diem ...

  13. #13
    Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    3.631
    Partner-ID
    7421

    Standard

    Danke für Deine fleißige Beschreibung.

    Obwohl ich bisher mit XAMPP immer ausreichend gut zurechtgekommen bin animiert die Beschreibung dazu, mal Docker zu testen.
    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.
    Immer dran denken: Contao-Check zum Testen der Servervoraussetzungen (Contao 2, Contao 3 und Contao 4) und zum Prüfen einer bestehenden Installation (bis Contao 3.5)

  14. #14
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Wer unter Windows mit der "Docker Toolbox" bzw. der "Virtualbox" unterwegs ist und Fehler bei der symlink Erstellung im Container erhält:

    Lösung: https://community.contao.org/de/show...l=1#post491161
    Carpe diem ...

  15. #15
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    521

    Standard

    Danke für das schöne Tutorial!

    Ich hab heute mal ein bisschen mit der devilbox gespielt - sehr, sehr angenehm.

    Ein paar Hinweise, die mir so aufgefallen sind:
    • Die Umleitung auf den web-Ordner soll man lt. Doku mittels Symlink machen (von htdocs auf web). Das klappt leider nicht. Ich habe daraufhin die .env geändert. Bei mir die globale, aber das kann man auch je vhost machen. Damit geht's.
    • Ausserdem hatte ich ein Problem mit Unterstrichen in den vhost-Namen. Da klappt die Installation, aber danach nichts mehr. Da wird der Unterstrich entweder von Contao (routing, eher unwahrscheinlich), oder eben der Devilbox raus genommen. Ausserdem klappen die Symlinks nicht mehr (nur die von /web/assets nach /assets und /web/files nach files, alle anderen z.B. bei Erweiterungen sind ok). Das muss ich mir nochmal ansehen und evtl. einen bug melden.


    Macht man hingegen die Umstellung auf web in der .env, dann ist ein frisches Contao 4.6 mittels composer auf der CLI (Manager hab ich nicht mehr probiert) in knapp zweieinhalb Minuten installiert!

    Von mir eine klare Empfehlung für die devilbox, das Ding spart mal richtig Arbeit und läuft schön stabil!

    Was ich als mega-angenehm empfinde, ist die E-Mail-catch-all Funktion. Endlich muss ich da nix mehr konfigurieren und kann das notification_center in Ruhe testen.

  16. #16
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    812
    Partner-ID
    6122

    Standard

    Hi, danke für Deine Hinweise.
    Ich mache auch gerade meine Gehversuche mit der devilbox v0.14 mit Windows u. Docker-Toolbox.

    Zitat Zitat von PaddySD Beitrag anzeigen
    [*]Die Umleitung auf den web-Ordner soll man lt. Doku mittels Symlink machen (von htdocs auf web). Das klappt leider nicht. Ich habe daraufhin die .env geändert.
    Ja, mit der Änderung der HTTPD_DOCROOT_DIR in der .env auf "web" geht es auch bei mir - Allerdings z.Z. nur mit Apache.
    Für NGINX muß ich noch die passende Konfiguration finden. Oder hast Du eine lauffähige ...

    Zitat Zitat von PaddySD Beitrag anzeigen
    [*]Ich habe daraufhin die .env geändert. Bei mir die globale, aber das kann man auch je vhost machen. Damit geht's.
    Wie kann man denn die .env je Projekt heranziehen?

    Weiterhin liefen in der Version v.0.14 bei mir mysql und phpmyadmin nicht auf Anhieb. Erst nach diesen Änderungen:
    https://github.com/cytopia/devilbox/issues/382
    https://github.com/cytopia/devilbox/issues/342

    Wie war das bei Dir?

    Der Composer auf der Console bzw. der CM ohne Resolver laufen auch - wenn man für die entsprechende PHP Version das memory_limit auf -1 setzt.
    Diese Konfigurationsmöglichkeiten sind in der devilbox wirklich einfach und schön gelöst.

    Allerdings finde ich die momentan die Nutzung der docker volumes mit der devilbox überdimensioniert.
    Beispielsweise wird ja hier der gesamte Projektordner herangezogen. Hat man also hierunter mehrere Projekte laufen werden alle Daten mit dem Host synchronisiert.
    Im Falle von Contao also alle Dateien/Verzeichnisse - inkl. der Cache Verzeichnisse. Das kann einiges verlangsamen ...

    Die Aussicht auf das 1.0.0 Release macht es in dieser Hinsicht nicht besser: https://github.com/cytopia/devilbox/pull/383
    Diese Vorgehensweise ist wahrscheinlich den möglichen Kompatibilitätsproblemen geschuldet:

    This PR will move all data directories (MySQL, PostgreSQL, MongoDB and others) to Docker volumes for best-practice and compatibility reasons on different operating systems.
    Carpe diem ...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •