¿Qué es #!?
#! (pronunciado shebang) es una convención usada principalmente en Unix para lenguajes de scripting como Python o Bash
- Aquí se presenta un caso de uso donde se aprovecha para empaquetar en un solo archivo una forma de distribuir aplicaciones de manera multiplataforma y en varias distribuciones de Linux
- El Dockerfile de ejemplo configura un servidor full stack completo que incluye backend, base de datos y UI, todo en un solo archivo
- Es similar a Cosmopolitan Libc, pero orientado al empaquetado de aplicaciones
¿Por qué usarlo?
¿Es seguro?
¿Deberías usarlo?
- Puedes usarlo si quieres.
¿Tiene buen rendimiento?
¿Se puede mantener?
¿Funciona?
¿Cómo se ejecuta?
- Se puede ejecutar con el siguiente comando:
chmod +x ./Dockerfile ./Dockerfile
- Después, entra a http://127.0.0.1:8080.
Opinión de GN⁺
- Este artículo presenta una forma poco común de empaquetar un servidor full stack en un solo Dockerfile usando
#! (shebang).
- Despierta curiosidad técnica y propone un enfoque nuevo frente a los métodos tradicionales de despliegue de aplicaciones.
- Aunque no se recomienda desde el punto de vista de mantenimiento y estabilidad, puede ser una alternativa interesante para desarrolladores interesados en proyectos experimentales e innovadores.
7 comentarios
Para usar un heredoc como
<<EOF, necesitas# syntax = docker/dockerfile:1.4.0al inicio del Dockerfile. Sorprendentemente,syntaxtambién se obtiene desde el registro de Docker.Guau... este es el mayor shock mental del año jajajajajajaja
Es una forma divertida.
Jajaja... de verdad está muy original.
Vaya... esto sí que es novedoso. Es como haber descubierto la combinación de acero de refuerzo y concreto... bueno, eso ya es exagerar un poco, pero me gusta. #! Justo da la casualidad de que en un Dockerfile
#es el carácter de comentario, así que qué curioso que funcione este tipo de truco... De ahora en adelante, supongo que tendré que meterlo en el Dockerfile en vez de usar un archivo aparte comobuild-run-test.sh.Está divertido. Jajaja. "¿Por qué no debería usarse?"
Comentarios de Hacker News
Ejemplo de uso del shebang de nix-shell
nix-shellpara crear un script ejecutable que incluya todas las dependencias necesarias.chmod +x), se convierte en un ejecutable con las dependencias especificadas.Opción
-S/--split-stringde/usr/bin/env-S, disponible desde GNU Coreutils 8.30.Docker y compatibilidad de arquitectura
Opiniones sobre aplicaciones de un solo archivo
Mención de Podman y bubblewrap como alternativas a Docker
Proyecto de un solo archivo con heredocs
Crítica a la obsesión con el "archivo único"
Patrón de scripts autoconsumibles
Cómo usar
guix shellen la posición del shebangguix shelltomado del manual de Guix.Dockerfile que se compila y ejecuta por sí mismo