Aquesta és una revisió antiga del document
Capítulo 2 (Docker SecDevOps)
Dockerfile
#comentarios o directivasINSTRUCCIÓN argumentos: por convención, instrucción en mayúsculas- primera instrucción: FROM (o ARG)
directivas
- antes de la instrucción FROM
- no repeticiones
- formato concreto:
# directiva=valor(respetando espacios) → si no, es tratado como un comentario - directivas soportadas actualmente:
- escape : caracter de escape en ficheros Dockerfile. Soporta \ y `
variables de entorno
- ENV
ENV var=valorENV var=valor var2=valor2 var3=$var2- se referencian con el signo $ o ${}
- funcionalidades tipo bash:
- ${var:-texto} : si var tiene valor propio (está inicializada) lo devuelve, si no, devuelve texto
- ${var:+texto} : si var tiene valor propio, devuelve la cadena texto, si no, devuelve vacío
- se pueden usar en:
- ADD
- COPY
- ENV
- EXPOSE
- FROM
- ONBUILD
- LABEL
- STOPSIGNAL
- USER
- VOLUME
- WORKDIR
.dockerignore
- se procesa al mismo tiempo que se procesa el contexto en el build de una imagen
- ignora todos los archivos / directorios que estén especificados
- uso de comodines: *, ?, !
- comentarios: #
- importancia del orden de criterio de exclusión:
*.md !README.md
*.md !README*.md README-secret.md
*.md README-secret.md !README*.md
- el primer ejemplo excluye todos los ficheros .MD excepto el README.md
- el segundo excluye todos los ficheros .MD excepto los README*.md, aunque el README-secret.md también quedaría excluido
- el tercer ejemplo es una mala construcción por el orden de las instrucciones, ya que el fichero README-secret.md quedaría incluido, cuando lo que pretendemos es excluirlo
- se puede excluir Dockerfile también, pero solo se ignorará en las instrucciones COPY y ADD
FROM
FROM <imagen>[:tag|@digest] [AS <nombre>]