In der Standardumgebung sind alle Komponenten für die EGOCMS Umgebung in einem Docker Container. Nur der Mailserver bekommt einen eigenen Container.
Der Hauptcontainer heißt egocms. Er benutzt das egotec/server-cms:18.04 Image und beinhaltet folgenden Software Stack.:
- Ubuntu 18.04 LTS
- nginx
- MariaDB
- php-fpm
- libreoffice headless
- pdf2text
Das Projektverzeichnis wird in den egocms Container direkt als Verzeichnis /usr/share/nginx/egocms eingebunden.
Da Daten der MariaDB Datenbank befinden sich Projektunterverzeichnis var/docker/mysql. Dadurch kann die Docker-Compose Umgebung komplett mit down heruntergefahren und gelöscht werden und die Daten bleiben dennoch für den nächsten Start erhalten.
Alle Container befinden sich im Netzwerk egocms. Die Container können sich daher untereinander über ihre Containernamen ansprechen.
docker-compose.yml
version: '2'
services:
egocms:
container_name: egocms
image: egotec/server-cms:18.04
ports:
- 80:80
- 443:443
expose:
- 80
- 443
networks:
- egocms
volumes:
- ./mysql:/var/lib/mysql
- ../../:/usr/share/nginx/egocms
command: bash /start.sh
mailhog:
container_name: mailhog
image: mailhog/mailhog
ports:
- 8025:8025
expose:
- 8025
- 1025
networks:
- egocms
networks:
egocms:
Auf Kommandozeile kann nach dem Start von docker-compose ein Bootstrap durchgeführt werden. Hierbei wird automatisch die aktuelle Datensicherung, die sich in var/setup befindet, eingespielt.
docker exec egocms bash /bootstrap.sh
IDE
Wir speichern die IDE Konfiguration in der Versionsverwaltung, daher kann die Docker Umgebung auch einfach über die IDE gestartet und beendet werden.
Docker-compose kann somit direkt über die IDE gestartet werden (grünes Dreieck rechts oben). Der Bootstrap kann anschließend über den Exec Eintrag im kontextsensitiven Menü des egocms Containers gestartet werden.
Wir stellen auch gerne mehrere Umgebungen zur Verfügung. Zumeist ist das die Standardumgebung mit einem EGOCMS Server und eine Umgebung, die so genau wie möglich die tatsächliche Infrastruktur im Livebetrieb widerspiegelt.
Diese Umgebungen konfigurieren wir schon in der IDE.