tag run remove example docker dockerfile naming-conventions

run - Cómo nombrar Dockerfiles



dockerfile tag (8)

No estoy seguro de cómo nombrar Dockerfiles. Muchos en GitHub usan Dockerfile sin una extensión de archivo. ¿Les doy un nombre y una extensión? ¿entonces qué? ¿O simplemente los llamo Dockerfile ?


¿Les doy un nombre y una extensión? ¿entonces qué?

Puede nombrar sus Dockerfiles como quiera. El nombre de archivo predeterminado es Dockerfile (sin una extensión), y usar el predeterminado puede facilitar varias tareas al trabajar con contenedores.

Dependiendo de sus requisitos específicos, es posible que desee cambiar el nombre del archivo. Si está construyendo para múltiples arquitecturas, por ejemplo, es posible que desee agregar una extensión que indique la arquitectura como el equipo resin.io ha hecho para el contenedor HAProxy, su ejemplo ARM de múltiples contenedores :

Dockerfile.aarch64 Dockerfile.amd64 Dockerfile.armhf Dockerfile.armv7hf Dockerfile.i386 Dockerfile.i386-nlp Dockerfile.rpi

En el ejemplo proporcionado, cada Dockerfile se construye a partir de una imagen ascendente diferente, específica de la arquitectura. El Dockerfile específico que se usará para la compilación se puede especificar usando la opción --file, -f al construir su contenedor usando la línea de comando.


Creo que debería tener un directorio por contenedor con un Dockerfile (sin extensión). Por ejemplo:

/db/Dockerfile /web/Dockerfile /api/Dockerfile

Cuando construyas solo usa el nombre del directorio, Docker encontrará el Dockerfile. p.ej:

docker build -f ./db .


He creado dos Dockerfiles en el mismo directorio,

# vi one.Dockerfile # vi two.Dockerfile

para construir el uso de Dockerfiles,

# docker build . -f one.Dockerfile # docker build . -f two.Dockerfile

Nota: debe estar en el directorio de trabajo actual.


No cambie el nombre del dockerfile si desea usar el autobuilder en hub.docker.com. No use una extensión para archivos acoplables, déjelo nulo. El nombre del archivo debería ser: (sin extensión)

Dockerfile

sin embargo, también puedes hacer lo siguiente ...

dev.Dockerfile , dev.Dockerfile , uat.Dockerfile , etc.

En VS Code, puede usar <purpose>.Dockerfile y funciona en consecuencia.


Parece que esto es cierto pero, personalmente, me parece un diseño pobre. Claro, tenga un nombre predeterminado (con extensión) pero permita otros nombres y tenga una forma de especificar el nombre del archivo acoplable para los comandos.

Tener una extensión también es bueno porque permite asociar aplicaciones a ese tipo de extensión. Cuando hago clic en un Dockerfile en MacOSX, lo trata como un ejecutable de Unix e intenta ejecutarlo.

Si los archivos Docker tuvieran una extensión, podría decirle al sistema operativo que los inicie con una aplicación en particular, por ejemplo, mi aplicación de editor de texto. No estoy seguro, pero el comportamiento actual también puede estar relacionado con los permisos de archivos.


Si desea utilizar el autobuilder en hub.docker.com, debe ser Dockerfile . Por lo tanto, allí :)


Dockerfile es bueno si solo tiene un archivo docker (por directorio). Puede usar el estándar que desee si necesita varios archivos acoplables en el mismo directorio, si tiene una buena razón. En un proyecto reciente había archivos docker de AWS y archivos de entorno de desarrollo local porque los entornos diferían lo suficiente:

Dockerfile Dockerfile.aws


dev.Dockerfile , dev.Dockerfile , test.Dockerfile , etc.

En VS Code, uso <purpose>.Dockerfile y se reconoce correctamente.