Qu’est-ce que #! ?
#! (prononcé shebang) est une convention utilisée sous Unix, principalement pour des langages de script comme Python ou Bash
- Présentation d’un cas d’usage où cela sert à empaqueter, dans un fichier unique, une méthode de distribution d’applications cross-platform et compatible avec plusieurs distributions Linux
- L’exemple de Dockerfile configure un serveur full stack complet, incluant backend, base de données et UI, dans un seul fichier
- Similaire à Cosmopolitan Libc, mais destiné à l’empaquetage d’applications
Pourquoi l’utiliser ?
- Pourquoi ne pas l’utiliser ?
Est-ce sûr ?
Faut-il l’utiliser ?
- Vous pouvez l’utiliser si vous en avez envie.
Est-ce performant ?
Est-ce maintenable ?
Est-ce que ça fonctionne ?
Comment l’exécuter ?
- Exécutable avec la commande suivante :
chmod +x ./Dockerfile ./Dockerfile
- Ensuite, ouvrez l’adresse http://127.0.0.1:8080.
L’avis de GN⁺
- Cet article présente une méthode originale pour empaqueter un serveur full stack entier dans un unique Dockerfile à l’aide de
#! (shebang).
- Cela stimule la curiosité technique et propose une nouvelle approche des méthodes traditionnelles de déploiement d’applications.
- Cette approche n’est pas recommandée du point de vue de la maintenance et de la stabilité, mais peut constituer une alternative intéressante pour les développeurs attirés par des projets expérimentaux et innovants.
7 commentaires
Pour utiliser un heredoc comme
<<EOF, il faut ajouter# syntax = docker/dockerfile:1.4.0en haut du Dockerfile. Fait surprenant,syntaxest lui aussi récupéré depuis le registre Docker.Waouh... c’est le plus grand choc mental de l’année lololololol
C’est une façon amusante de faire.
Haha... c’est vraiment original.
Waouh… c’est vraiment original. Comme découvrir l’association entre le béton armé et le ciment… bon, c’est un peu exagéré, mais j’aime beaucoup.
Le plus fou, c’est que comme
#!tombe justement dans un Dockerfile sur le caractère de commentaire#, ce genre d’astuce fonctionne…À l’avenir, au lieu d’un fichier séparé du genre
build-run-test.sh, je ferais mieux de le mettre directement dans le Dockerfile.C’est assez amusant. hahaha « Pourquoi ne faudrait-il pas l’utiliser ? »
Commentaires Hacker News
Exemple d’utilisation d’un shebang
nix-shellnix-shell.chmod +x), il devient un exécutable avec les dépendances spécifiées.Option
-S/--split-stringde/usr/bin/env-S, disponible depuis GNU Coreutils 8.30.Docker et compatibilité d’architecture
Avis sur les applications en fichier unique
Mention de Podman et bubblewrap comme alternatives à Docker
Projets en fichier unique avec des heredocs
Critique de l’obsession du « fichier unique »
Modèle de script auto-consommateur
Utilisation de
guix shellà l’emplacement du shebangguix shell, tiré du manuel Guix.Dockerfile qui se construit et s’exécute lui-même