Creación automática de imágenes Docker con Dockerfile
Si bien se debe depurar y poner a punto un contenedor con nuestra aplicación para luego crear una imagen que será utilizada para poner a funcionar nuestras aplicaciones en un cluster con Docker, esa acción no es la mejor práctica al momento de hacer una imagen productiva.
En el siguiente artículo explicamos la utilización del archivo Dockerfile.
Cuando se desarrolla una aplicación que va a funcionar en un contenedor Docker lo más lógico y práctico es instalar las aplicaciones y librerías como hemos explicado en artículos anteriores. Pero estas acciones aparte de instalar nuestras aplicaciones como lo deseamos, se generan también los logs y archivos temporales de un sistema funcional. Esto implica que al generar una imagen Docker desde ese mismo contenedor se van a incluir una cantidad de archivos innecesarios en la imagen que va a incrementar el tamaño de nuestra imagen y dejar variables de entorno que pueden ser un problema a la hora de ejecutar ese contenedor en un ambiente productivo.
Para solucionar este problema, el proyecto Docker creó el Dockerfile. Es un archivos denominado Dockerfile en el cual se indica línea a línea y con etiquetas específicas las acciones que debe realizar el docker engine para crear la imagen. Se puede consultar la documentación donde se explica la utilización de cada etiqueta aceptada por Dockerfile.
El siguiente Dockerfile es el que utilizamos en el video donde se indica el modo que se debe crear la imagen que llamamos wordpress.
FROM debian:latest MAINTAINER Diego G. Calbo Elizondo <[email protected]> # Update mirrors RUN apt-get update # Mysql unattended install RUN echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections RUN echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections # Services and libs installation RUN apt-get install apache2 php5-mysql php5 libapache2-mod-php5 mysql-server-5.5 wget nano curl -y # Mysql permission set RUN /etc/init.d/mysql start && mysql -uroot -proot -e "create database wordpress" && mysql -uroot -proot -e "grant all on wordpress.* to 'wordpress'@'localhost' identified by 'dbpassword'; flush privileges" # Wordpress download and decompress RUN cd /tmp; wget https://wordpress.org/latest.tar.gz RUN cd /var/www/html; rm index.html; tar xzvf /tmp/latest.tar.gz; mv wordpress/* .; rm -rf wordpress # Wordpress main config file copy COPY wp-config.php /var/www/html/wp-config.php # Permission set for /var/www/html RUN chown www-data:www-data /var/www/html/ -R # SSH installation RUN apt-get install ssh -y RUN mkdir /home/apuntesit ; useradd apuntesit -d /home/apuntesit -s /bin/bash RUN echo "apuntesit:apuntesit" | chpasswd apuntesit RUN mkdir /var/run/sshd # Supervisord installation and configuration RUN apt-get install supervisor -y COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Expose ports EXPOSE 22 80 # Execute supervisord # CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] CMD ["/usr/bin/supervisord"]
En el siguiente video se explica el anterior archivo y el modo en que debe ser utilizado.
Recuerda que el conocimiento es libre y por lo tanto compartirlo no cuesta nada. Si tenes algún comentario o experiencia para compartir con nosotros, no dudes en escribirla en los comentarios.
Te esperamos en nuestro twitter para que te enteres de las novedades y visita nuestro canal de Youtube para más información.
Enlaces útiles
Docker: http://www.docker.com
Blog: https://www.apuntesit.tk
Twitter: http://www.twitter.com/apuntesit
YouTube: https://www.youtube.com/channel/UCh_k8K1wP31GfOFdYJj5Eeg
Trabajando desde el año 1990 en el mercado de la tecnología. Técnico en Electrónica. Administrador de Sistemas. Administrador de Redes. Técnico en telecomunicaciones. Técnico de plataforma satelital. Incursiono en el Software Libre desde mediados del 1997. Desde entonces utilicé varias distribuciones GNU/Linux comenzando con un RedHat 5.0
Formé parte del Core Team y miembro del grupo de desarrollo del Proyecto UTUTO.