Buenas practicas con Dockerfile
Encadenar instrucciones &&
Como cada comando RUN en el Dockerfile genera una nueva capa de nuestra imagen anterior podemos encadenar los "RUN's" para así generar menos capas de nuestra capa editable de las imágenes:
/Dockerfile
FROM debian:stretch
RUN apt-get update && apt-get install -y git vim
si ejecutamos para crear una nueva imagen con el anterior Dockefile solo veremos que se ejecutan dos pasos en lugar de cuatro
Comandos multilínea
Otra buena práctica es ordenar los argumentos multi-línea alfabéticamente , esto ayudará a evadir la duplicación de paquetes y hará el listado mucho mas fácil de actualizar y leer, por ejemplo:
/Dockerfile
FROM debian:stretch
RUN apt-get update \
&& apt-get install -y \
git \
nginx \
vim
CMD
con este comando podemos encadenar acciones que se ejecutan una vez se construye el contenedor (partiendo de la imagen creada con el Dockerfile). Si no se pone ningún CMD se ejecuta el comando por default que viene de la imagen original:
/Dockerfile
FROM debian:stretch
RUN apt-get update \
&& apt-get install -y \
git \
vim
CMD ["echo","Hola desde Docker"]
Ahora construimos la imagen con el anterior Dockerfile
docker build -t git_vim .
en el paso 3 imprime en consola:
Step 3/3 : CMD ["echo","Hola desde Docker"]
luego construimos el primer contenedor con la imagen anteriormente creada
docker run --rm git_vim
> Hola desde Docker
Copy
Este comando copia los archivos contexto del build hacia el fileSystem del contenedor
FROM debian:stretch
RUN apt-get update \
&& apt-get install -y \
git \
vim
COPY abc.txt /src/abc.text
CMD ["echo","Hola desde Docker"]
luego construimos la imagen
docker build -t image_test .
luego el contenedor
docker run --rm -it image_test bash
una vez allí podemos verificar que el folder src y el archivo abc.txt han sido enviados al contenedor
root@2c8118d2fb5c:/# cd src/
root@2c8118d2fb5c:/src# ls
abc.txt
ADD
Es similar a COPY pero además de copiar y enviar archivos también puedo descargar archivos desde internet y agregarlos al contenedor.
También cuenta con la habilidad de descomprimir archivos
la regla es usar COPY a menos que se esté completamente seguro de que se requiere ADD
Last updated
Was this helpful?