Skip to content
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

Use GitHub workflow to publish for multiple platforms (amd64, arm64), support Apple M1/M2 #67

Closed
schuer opened this issue Feb 28, 2023 · 7 comments
Assignees

Comments

@schuer
Copy link
Member

schuer commented Feb 28, 2023

Set up a GitHub workflow to publish Docker images for multiple platforms. Current build via Docker Hub supports only linux/amd64 out of the box and is hard to customize.

@schuer schuer self-assigned this Feb 28, 2023
@schuer schuer pinned this issue Feb 28, 2023
@schuer
Copy link
Member Author

schuer commented Mar 6, 2023

Bei der Gelegenheit sollte die Struktur der Images und Tags vielleicht einmal überdacht werden. Aktuell liefern wir eine Vielzahl von Images in den Hub, von denen nur ein kleiner Teil wirklich genutzt wird.

Überlegungen

  • Die beiden Varianten apache und fpm sollten sicherlich bleiben. FPM wird für den Betrieb mit NGINX benötigt. Die ehemals dritte Variante alpine haben wir bereits vor einiger Zeit entfernt.
  • Eine Unterscheidung der PHP-Versionen ist sicherlich auch sinnvoll. Nur eine einzelne Version anzubieten würde die Möglichkeiten nehmen, besonders alte (7.x) oder besonders neue (z. B. auch RC-Versionen) zur REDAXO-Entwicklung zu verwenden.
  • Verschiedene REDAXO-Versionen sind vielleicht gar nicht so wichtig wie ursprünglich angenommen. Die Docker-Images sind in erster Linie eine Entwicklungsumgebung, und man kann sich bei Bedarf schnell das passende REDAXO von Hand installieren. Tiefer als REDAXO 5.9 können wir sowieso nicht automatisch installieren, denn erst damit kam die Installation mittels Konsole, die hier benötigt wird.

Vorschlag

Wie wäre es, Images zukünftig anhand von zwei »Interessensgebieten« anzulegen:

a) Betrieb, anhand der REDAXO-Version

Damit kann man gezielt einen Container mit vorinstalliertem REDAXO in gewünschter Version hochziehen. Die PHP-Version allerdings ist nicht (mehr) relevant und kommt abhängig vom eingesetzten REDAXO.

Beispiele für Tags:

  • 5.15-apache = 5.15 = 5 🚀
  • 5.15-fpm
  • 5.9-apache = 5.9
  • 5.9-fpm

b) Entwickung, anhand der PHP-Version

Damit kann man gezielt eine Entwicklungsumgebung aufziehen. Ist der Webroot leer, wird die jeweils aktuelleste in dem Kontext lauffähige REDAXO-Version vorinstalliert – sie ist allerdings nur Beiwerk.
Zudem können wir hier ein paar REDAXO-typische Tools ergänzen, die für den Betrieb nicht relevant sind, für die Entwicklung jedoch sehr nützlich sind. Etwa Composer, SSL, Blackfire, o. ä. so wie zurzeit manuell im Repo redaxo-mit-docker zu sehen.

Beispiele für Tags:

  • php8.2-apache = php8.2 = php8 🚀
  • php8.2-fpm
  • php7.4-apache = php7.4 = php7
  • php7.4-fpm
  • php7.3-apache = php7.3
  • php7.3-fpm

@schuer
Copy link
Member Author

schuer commented Apr 15, 2023

Die Implementierung erfolgt im Branch next.

@schuer
Copy link
Member Author

schuer commented Dec 8, 2023

Ein paar Monate später denke ich ganz anders: Es sollte viel simpler sein!

Überlegungen

  • Verschiedene REDAXO-Versionen sind nicht mehr relevant.

    Viele AddOns, vor allem yform, setzen inzwischen eine aktuelle REDAXO-Version voraus. Es gibt vermutlich nur noch wenige Gründe, ein älteres REDAXO zu betreiben.
  • Verschiedene PHP-Versionen sind nur noch bedingt relevant.

    Aus der ersten Überlegung, dass nur noch aktuelle REDAXO-Versionen angeboten werden, ergibt sich beinahe zwangsläufig, dass auch keine älteren PHP-Versionen mehr benötigt werden. Diese machen uns recht viel Aufwand, den wir gerne vermeiden können.

    Weiterhin interessant bleibt aber die Möglichkeit, ganz aktuelle PHP-Versionen nutzen zu können, etwa auch RCs.
  • Die beiden Varianten apache und fpm sind noch relevant.

    Allerdings: Werden die fpm für NGINX wirklich von der Community genutzt? Ich vermute nicht und würde es hier gerne vereinfachen, indem wir fpm nicht weiter anbieten.

Und aus den letzten Überlegungen vom März:

  • Verschieden Varianten für a) Betrieb und b) Entwicklung sind nicht mehr sinnvoll.

    Wenn wie oben beschrieben nur noch eine REDAXO-Version und wenige PHP-Versionen angeboten werden, braucht es keine aufwendige Unterscheidung mehr.


Neuer Vorschlag

So einfach wie möglich. Wir brauchen:

  • Separate Images für REDAXO 5, 6, 7…
  • Eine stabile PHP-Version für den Betrieb und die jeweils aktuellste PHP-Version zum Testen
  • Kein fpm mehr
  • Gerne alle für die Entwicklung nützlichen Tools in allen Images enthalten: Git, Composer, SSL, Blackfire, o. ä.

Ich schlage nunmehr folgende handliche Tags vor:

  • 5-stable = 5 🚀
  • 5-edge
  • 6-stable = 6
  • 6-edge

Stable enthält die jeweils kleinste aktive PHP-Version und das aktuelle REDAXO, Stand heute also PHP 8.2 mit REDAXO 5.15.1.
Edge ist jeweils so aktuell wie möglich, also beispielsweise PHP 8.4 RC mit REDAXO 5.16-beta.

@skerbis
Copy link
Member

skerbis commented Dec 8, 2023

Eine andere Idee @schuer :

Anstelle der REDAXO Images den REDAXO Loader anbieten.
Und hierfür Images für die gewünschte PHP-Version anbieten?
Den Loader könnte man noch so anpassen dass er auf die aktuelle PHP-Version reagiert und nur die REDAXO-Versionen anbietet, die in der gewünschten Umgebung funktioniert?

@schuer
Copy link
Member Author

schuer commented Dec 8, 2023

@skerbis Der Loader ist eigentlich nicht das richtige Werkzeug an dieser Stelle. Er lädt ja nur ein ZIP runter und entpackt es, soll also eine Hilfe für die Anwender sein.

Die Docker-Images hingegen enthalten bereits REDAXO, und es wird beim Start der Container automatisch installiert, sofern der Webroot leer ist. Hier profitiert man also von Automatisierung, und im nächsten Schritt können dann sogar die Website-Demos automatisch installiert werden.

@skerbis
Copy link
Member

skerbis commented Dec 8, 2023

ok.

@schuer schuer mentioned this issue Dec 9, 2023
@schuer
Copy link
Member Author

schuer commented Dec 24, 2023

✅ Images für arm64 sind inzwischen im main-Branch und in den Registries (Docker Hub, GitHub Container Repository) angekommen.

@schuer schuer closed this as completed Dec 24, 2023
@schuer schuer unpinned this issue Dec 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants