-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Docker #88
base: master
Are you sure you want to change the base?
Docker #88
Conversation
Dockerfile
Outdated
COPY . . | ||
|
||
# Install PHP dependencies including symfony/runtime | ||
RUN composer install --classmap-authoritative --no-scripts |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--no-dev Flag hinzufügen, wenn fertig mit testen
Ich erhalte aktuell auf der Seite Registrierungscodes erstellen noch einen Fehler über ein fehlendes DB Feld und auch beim hinzufügen des Users fehlt wohl ein Standardwert für das Email Verification Feld. Entweder ist hier was in den Migrationen falsch oder man müsste nochmal in das Anlegen der User und der Codes schauen. Ansonsten funktioniert auf den ersten Blick alles. |
@frostieDE Kannst du mir hier weiterhelfen? |
Im Grunde kann der gesamte node_modules-Ordner weg - nachdem |
Ich kenne mich zwar nicht 100%ig mit Docker aus, aber was spricht dagegen, dass man nginx und php-fpm als zwei Container getrennt laufen lässt? (außer natürlich Overhead) Ist das üblich, dass man die Anwendung gemeinsam mit nginx in einen eigenen Container schmeißt? |
Das passiert schon jetzt. Allerdings habe ich noch den kompletten Quellcode im Container und das ist ein wenig overhead glaube ich. Außer wir brauchen den tatsächlich... |
Ich schaue mir das die Tage mal an - auf den ersten Blick sollte das ja nicht an Docker liegen sondern ein allgemeines Deployment-Problem sein :'( |
Kann man so oder so machen. Schöner ist es aber wenn die Dienste getrennt sind. In dem Fall müsste man nochmal an die nginx Config ran, damit der die PHP Dateien aus dem anderen Container hostet. Dafür müsste man allerdings nur den fastcgi_pass Parameter auf Dann hätten wir drei Dienste pro Stack / Docker Compose:
|
Es gab tatsächlich eine problematische Migration - habe ich mit c46516e behoben. Das sollte dann die Fehlermeldungen lösen. Ich empfehle, die bisher entstandene Datenbank zu löschen. |
Ok. Dann teste ich das später mal. Ich würde vorschlagen, dass wir das Image dann per GitHub Action automatisch bauen und in die Docker Registry laden. Dafür braucht man aber einen Account. Ich teste das erstmal auf meinem Account, aber für's mergen sollten wir dann am Besten einen Account für die ganze SchulIT Umgebung nutzen. |
Brauchen wir abgesehen von dem Node Modules Ordner alle Dateien aus dem Repo? Und welche Volumes sollten noch persistent gespeichert werden abgesehen von der DB? |
Beim Ordner Alle anderen Dateien müssen jedoch im Image landen. |
Der Ordner Ansonsten gibt es halt noch die Datei Alles andere ist (statischer) Quelltext und kommt ins Image. |
Ich habe das hier gerade einmal ausprobiert. Das macht für uns einfach keinen Sinn das zu trennen. Wir müssten den Code sowohl in den nginx Container als auch in den fpm Container rein reichen. Dafür müssten wir ein Volume haben und dort den Code vom Docker Host aus reinladen. Das macht einfach keinen Sinn und das Setup nur deutlich komplizierter. Ich halte es für einfacher, wenn es einen Web Container gibt, der den kompletten PHP und nginx Service beinhaltet und einen separaten DB Service. Das Verlinken von verschiedenen Diensten in einem nginx würde eh wegen der Docker Netzwerk Isolation nicht den Standards entsprechen |
- Removed unnecessary files - Added db ready check in docker compose --> WEB Container only starts after db with migrations etc. - Set Timezone for Docker Container - Integrated DB Env Vars in .env.local and .env - persist cert folder of web service
Ich habe noch ein Problem mit dem Docker Image: Seit dem Merge erhalte ich den folgenden Fehler:
Hast du eine Idee, woran das liegen könnte? Mit Commit 42edb49 funktioniert noch alles. |
Ich konnte es leider noch nicht testen, weil ich den Branch noch nicht bauen kann (s.o.) |
Create Pipeline for auto publish on release
Docker image
Create Pipeline for auto publish on release
Scheinbar läuft der Build auf anderen Maschinen (wie z.B. der Github Action) durch. Zum Testen enfach |
Ok, bei mir klappt es jetzt auch auf dem Rechner, nachdem ich das Repo nochmal neu gepullt habe. Dann könnte man das von mir aus mergen. Ich habe auch schon ein Test Deploy auf unserem Docker Schul-Server hinbekommen. |
Man könnte jetzt noch das Repo für den Upload im Docker Hub ändern. |
Die Doku habe ich auch schon angepasst. Ich stelle den Branch mal auf |
Eine Sache, die im Image noch fehlt (sorry, die Dokumentation dazu ist versteckt), sind Cronjobs... https://docs.schulit.de/idp/guides/cronjobs#cronjobs-auf-betriebssystemebene-ausf%C3%BChren Kann man das mittels Crontab in Docker Images lösen? |
Ich hätte zwei Ideen, müsste ich aber noch im Detail prüfen:
docker exec it <container_name> /usr/bin/php /var/www/html/bin/console shapecode:cron:run
|
* Added Github Action to automatically build image (#2) Create Pipeline for auto publish on release * Added restart prop to web container * boost startup of web container after db ready * added docker installation docu
Noch ToDo:
|
Der Fehler hängt mit dem Ohne |
* Added Github Action to automatically build image (#2) Create Pipeline for auto publish on release * Added restart prop to web container * boost startup of web container after db ready * added docker installation docu * nginx fix
Ursache: Die Umgebungsvariable |
Nachtrag (mal wieder nicht richtig gelesen...): Schau mal ins Log ( |
Lösung 1 erscheint mir natürlich flexibler (weil man kann dann selbst entscheiden, ob man Crontab oder bspw. systemd nutzt - ich nutze letzteres), aber Lösung 2 hat den Charme, dass es "out-of-the-box" funktioniert. Ich kenne mich nicht so wahnsinnig gut in der Dockerwelt aus, aber ich hätte vermutlich erwartet, dass das Docker-Image "out-of-the-box" funktioniert (und würde daher Lösung 2 vorschlagen). Aber ich nehme sehr gerne Gegenargumente an :) |
Ich habe beides noch nicht genutzt und müsste mir Mal anschauen, wie man die nutzt. Per Kommandozeile auf den Container zugreifen finde ich jetzt auch nicht so schön, zumal sich der Name oder die ID ja auch schnell ändern können und es dann zu Fehlern kommt. Ich würde mal schauen, ob man den Zugriff nach außen schön gestaltet bekommt, sodass man crontab oder systemd als zusätzlichen Service in der Docker Compose definieren kann. |
Dieser PR macht den IdP lauffähig unter Docker
Noch ausstehend: