Was ist #!?
#! (ausgesprochen als shebang) ist eine Konvention unter Unix, die hauptsächlich für Skriptsprachen wie Python oder Bash verwendet wird
- Vorgestellt wird ein Beispiel, wie dies genutzt werden kann, um eine Anwendungsbereitstellung für Cross-Platform-Umgebungen und verschiedene Linux-Distributionen als einzelne Datei zu paketieren
- Das Beispiel-Dockerfile konfiguriert einen Full-Stack-Server mit Backend, Datenbank und UI in einer einzigen Datei
- Ähnlich wie Cosmopolitan Libc, aber für das Paketieren von Anwendungen
Warum sollte man das verwenden?
- Warum sollte man es nicht verwenden?
Ist es sicher?
Sollte man es verwenden?
- Wenn man möchte, kann man es verwenden.
Ist die Performance gut?
Ist es wartbar?
Funktioniert es?
Wie führt man es aus?
- Ausführbar mit folgendem Befehl:
chmod +x ./Dockerfile ./Dockerfile
- Danach http://127.0.0.1:8080 aufrufen.
Meinung von GN⁺
- Dieser Artikel stellt eine ungewöhnliche Methode vor, mit
#! (shebang) einen Full-Stack-Server in einem einzelnen Dockerfile zu paketieren.
- Sie weckt technische Neugier und zeigt einen neuen Ansatz für traditionelle Methoden der Anwendungsbereitstellung.
- In Bezug auf Wartbarkeit und Stabilität ist dieser Ansatz nicht empfehlenswert, kann aber für Entwickler, die sich für experimentelle und innovative Projekte interessieren, eine interessante Alternative sein.
7 Kommentare
Um ein Heredoc wie
<<EOFzu verwenden, ist am Anfang des Dockerfiles# syntax = docker/dockerfile:1.4.0erforderlich. Überraschenderweise wird sogarsyntaxaus der Docker-Registry bezogen.Wow ... das ist mein größter mentaler Schock dieses Jahres lololololol
Ein interessanter Ansatz.
Haha … wirklich originell.
Wow … das ist wirklich originell. Fast so, als hätte man die Kombination aus Bewehrungsstahl und Beton entdeckt … na ja, das ist etwas übertrieben, aber ich finde es gut.
Dass dieser kleine Trick auf diese Weise funktioniert, weil
#!ausgerechnet in einer Dockerfile wegen des#als Kommentarzeichen durchgeht …Künftig sollte ich das wohl in die Dockerfile packen statt in eine separate Datei wie
build-run-test.sh.Das ist ja interessant. Haha. "Warum sollte man es nicht verwenden?"
Hacker-News-Kommentare
Beispiel für die Verwendung eines
nix-shell-Shebangsnix-shell-Shebang ein ausführbares Skript erstellt, das alle benötigten Abhängigkeiten enthält.chmod +x), wird es zu einer ausführbaren Datei mit den festgelegten Abhängigkeiten.Die Option
-S/--split-stringvon/usr/bin/env-S, die seit GNU Coreutils 8.30 verfügbar ist.Docker und Architekturkompatibilität
Meinungen zu Single-File-Anwendungen
Podman und bubblewrap als Docker-Alternativen
Single-File-Projekte mit heredocs
Kritik an der Fixierung auf „Single File“
Das Muster selbstkonsumierender Skripte
seddas Skript zwischen Tags extrahiert.Verwendung von
guix shellan der Shebang-Positionguix shellgezeigt.Sich selbst bauendes und ausführendes Dockerfile