Documentation Vagrant mit Docker
Installation der Vagrant Box
Die Grundinstallation der VM wird anhand der Dokumentation von WebDevOps durchgeführt.
Diese Anleitung bezieht sich auf das Projekt "PhotoFancy". Die Vagrant Box wird hier in den Ordner photofancy-environment installiert.
ℹ️ Die CPU Virtualisierungstechnologie nicht vergeßen zu aktivieren.
git clone -b ubuntu-14.04 --recursive --config core.autocrlf=false https://github.com/webdevops/vagrant-development.git photofancy-environment
cd photofancy-environment
bindfs Plugin installieren
vagrant plugin install vagrant-bindfs
Wenn unter OSX der Parallels Provider benutzt wird, muss das Plugin installiert werden
vagrant plugin install vagrant-parallels
Wenn unter Windows die VMWare Workstation benutzt wird, muss das Plugin installiert werden
vagrant plugin install vagrant-vmware-workstation
Spezielle Anpassungen der VM
Anpassungen in der vm.yml
CPU und Speicher der Box zuweisen, Beispiel anhand eines Quadcore Prozessors und min. 8GB RAM
cpu: '2'
memory: '6144' // composer braucht > 4096 Arbeitsspeicher
Die SharedFolder müssen je nach Betriebssystem angepasst werden.
# OSX
sharedFolder:
- { type: 'nfs', src: '~/Workspace/Webentwicklung', target: '/var/www' }
# Windows (Source je nach User anpassen)
sharedFolder:
- { type: 'default', src: 'C:/www', target: '/var/www'}
Um den "Authentication failure" Warning zu vermeiden
useSshPasswordAuth: true
Die Port-Weiterleitungen auf Port 80 sollte angepasst werden (unter Windows wird Standardmäßig Port 80 gesetzt, keine Weiterleitung nötig).
portForwarding:
{ guest: 80, host: 80, hostIp: '192.168.56.2', protocol: 'tcp' }
Anpassungen im Vagrantfile
Das automatische Update der Parallels-Tools muss deaktiviert werden, da sonst die Box nicht startet (Tools können nicht installiert werden) - auf false setzen
v.update_guest_tools = false
Die NFS Rechte müssen auch angepasst werden (Nur für OSX).
:nfs => { :mount_options => [ "dmode=777", "fmode=777" ] }
Unter OSX mit Parallels Provider müssen folgende Zeilen auskommentiert werden, da die Box nicht "headless" startet:
#v.customize ["set", :id, "--startup-view", "headless"]
Anpassungen des Docker-Proxy
Weil ein Virtual Host durch Ansible auf Port 80 vorgegeben wird, die Weiterleitung innerhalb der VM von port 80 zu 8000 funktioniert nicht.
Um das zu ändern, änderen wir die Port des Virtual Hosts auf z.B. 8050 in der Datei photofancy-environment/provision/ansible/roles/docker-proxy/files/sites-available
<VirtualHost *:8050>
ServerName DEV-VM
ServerAdmin webmaster@localhost
DocumentRoot /var/www/empty
...
...
...
Installation PHP Docker Boilerplate
Offizielle PHP Docker Boilerplate Dokumentation.
Vagrant Box starten
vagrant up
Per SSH in die Box einloggen
vagrant ssh
username/password: vagrant
Auf dem Ubuntu-System dann in den Projekt-Order navigieren.
cd /var/www/photofancy-environment
Grundinstallation
git clone https://github.com/digitalprint/photofancy-docker-boilerplate.git photofancy
in den photofancy Ordner wechseln
cd photofancy
docker-compose.yml erstellen
cp docker-compose.development.yml docker-compose.yml
Als erstes werden die Docker-Container gestartet. Beim ersten Start werden die Container erst gebildet.
docker-compose up -d
Wenn man an der Konfiguration etwas ändert, reicht es in den meisten Fällen, die Container neu zu starten.
docker-compose stop
docker-compose up -d
... ansonsten alten Container entfernen und neu bilden (Beispiel MySQL)
docker-compose rm mysql
Zum Schluss die IP in der hosts Datei (in deine Host-Maschine) auf photofancy mappen.
192.168.56.2 local.photofancy.de local.photofancy.ro local.photofancy.pl local.photofancy.co.uk local.photofancy.es local.photofancy.fr local.photofancy.it local.photofancy.com
PhotoFancy Projekt Setup
PhotoFancy Projekt in den app Ordner klonen
git clone https://github.com/digitalprint/photofancy2.git app
Anpassungen parameters.yml
Die vorhandene parameters.yml in den app/config Ordner kopieren und dann den MySQL- Host und Port anpassen...
database_host: mysql
database_port: 3306
... sowie alle Ordnerpfade anpassen.
shared_dir_web: _filesystem
shared_dir_resources: _filesystem/resources
shared_dir_pfresources: _filesystem/resources
shared_dir_cache: _filesystem/photofancy/cache
shared_dir_orders: _filesystem/photofancy/output
shared_dir_effect_repository: _filesystem/photofancy/repo/private/effects/current
shared_dir_effect_src: _filesystem/photofancy/repo/private/effects/current/provider/pf/filter/src
shared_dir_uploads: _filesystem/uploads
shared_dir_assets: _filesystem/assets
... und den Node Pfad auf /usr/bin setzen
node_module_path: /usr/bin
und wechseln anschließend in das PhotoFancy Projekt
cd /var/www/photofancy-environment/photofancy/app
Mit Docker-Container verbinden
Um später die Befehle der php app/console auszuführen, muss man sich mit der Container-Instanz verbinden. Man landet direkt im Projektverzeichnis.
docker exec -t -i photofancy_app_1 /bin/bash
PhotoFancy Setup via Composer
composer install
Anschließend wechseln wir wieder zurück in den PhotoFancy Projekt Ordner
cd /var/www/photofancy-environment/photofancy
Docker-Container hochfahren und verbinden
Datenbank Create & Sync
DB Erzeugen
php app/console doctrine:schema:create
Session Tabelle anlegen
php app/console doctrine:query:sql "CREATE TABLE sessions ( sess_id VARBINARY(128) NOT NULL PRIMARY KEY, sess_data BLOB NOT NULL, sess_time INTEGER UNSIGNED NOT NULL, sess_lifetime MEDIUMINT NOT NULL ) COLLATE utf8_bin, ENGINE = InnoDB;"
Lokale DB -> Online DB Sync
php app/console pf:database:sync
Benutzer anlegen:
Admin-Benutzer für die lokale Dev-umgebung anlegen (Username=pfadmin, Passwort=pfadmin)
php app/console fos:user:create pfadmin admin@dev.photofancy.de pfadmin
php app/console fos:user:promote ppadmin ROLE_ADMIN
PhotoFancy Installer starten
ACHTUNG: es gibt derzeit noch einen Fehler in der photofancy.sh. Nach einem Clone von Github werden die Line-Endings verändert. So lässt sich das Script nicht ausführen.
Dafür gibt es einen kleinen Hotfix:
Öffne die Datei photofancy.sh aus dem Ordner photofancy-environment/photofancy/etc/installer/photofancy.sh auf deiner Festplatte in PHPStorm. Anschließend einmal die Line-Endings auf Unix/OSX (\n) stellen. Dann noch irgendwo ein Leerzeichen einfügen, so dass das Dokument geändert wird. Nun noch speichern. Weiter gehts!
Hier werden alle benötigten Tools wie Gmic, Potrace, OpenCV etc. installiert.
...wir befinden uns immer noch im Docker App-Container...
cd /opt/docker/etc/installer
./photofancy.sh
Anschließend müssen noch die Assets für das dev-Environment installiert werden.
cd /app
php app/console assets:install web --symlink
PhotoFancy Effektmanager Projekt Setup
Als letztes muss noch das Effektmanager Repository geklont werden.
cd /app
git clone https://github.com/digitalprint/photofancy-effectmanager.git web/_filesystem/photofancy/repo/private/effects/current
Glückwunsch - PhotoFancy ist jetzt unter local.photofancy.de:8000/app_dev.php als Entwicklungsumgebung erreichbar!
Starten und Stoppen von Vagrant und Docker
1. Starten der Vagrant Box und Docker-Container
- Vagrant starten
cd pfad_zum_ordner_photofancy-environment
vagrant up
- In die Vagrant Box per SSH einwählen
vagrant ssh
- Docker-Container starten
cd /var/www/photofancy-environment/photofancy
docker-compose up -d
- Jetzt kannst du photofancy von dein Browser besuchen http://local.photofancy.de:8000 oder https://local.photofancy.de:8443
2. Stoppen der Vagrant Box und Docker-Container
- Docker-Container stoppen (man muss sich in der Vagrant Box befinden)
docker-composer stop
- Vagrant Box stoppen / neustarten
Falls man sich noch in der Vagrant Box befindet, diese mit exit verlassen, anschließend
- Stoppen
vagrant halt
- Neustarten
vagrant reload
- Neustarten und neu Provisionieren (nach Änderungen in der config.yml)
vagrant reload --provision
3. In den Docker-App-Container springen
docker exec -t -i photofancy_app_1 /bin/bash
Datenbank Verbindung per SSH (MySQL-Tool)
MySQL-Host: 127.0.0.1
Benutzer: root
Password: **********
Datenbank: photofancy
Port: 13306
SSH-Host: 192.168.56.2
SSH-Benutzer: vagrant
SSH-Password: **********
SSH-Port: 22