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: http://apuntesit.tk
Twitter: http://www.twitter.com/apuntesit
YouTubehttps://www.youtube.com/channel/UCh_k8K1wP31GfOFdYJj5Eeg

Apuntes IT - Compartiendo conocimiento.
Tech Nerd theme designed by Siteturner
Share
Share