Docker.pdf

Vista previa de texto
adelante, sólo ejecutará una instrucción. Es decir, si tenemos varios CMD dentro
de un Dockerfile, ejecutará sólo el último.
Solución:
Usando Supervisor para monitorear y ejecutar MySql y HTTPD. Supervisor se
encarga de controlar varios procesos y se ejecuta como cualquier otro
programa.
Veremos diferentes formas de hacer esto. En principio crearemos todo dentro
de un único contenedor, pero luego explotaremos al máximo los principios y
características de Docker para hacerlo, por ejemplo separar servicios en
diferentes contenedores y linkearlos.
Usando Supervisor y en un único contenedor
Creamos el Dockerfile, con este contenido:
# Imagen Base
FROM ubuntu:14.04
# Instalamos dependencias
# apache2: Servidor Web
# php5: Lenguaje de programacion PHP
# php5-mysql: Driver de MySql para PHP
# supervisor: Lanzadaror y Monitor de procesos
# wget: Utilidad para obtener archivos via HTTP
RUN apt-get update && apt-get -y install \
apache2 \
php5 \
php5-mysql \
supervisor \
wget
# mysql-server se instala con intervención del usuario,
# pero como no es modo interactivo lo que hacemos es setearle las variables
# con un valor.
# Para simplificar hemos usado como usuario y contraseña de mysql 'root'
RUN echo 'mysql-server mysql-server/root_password password root' | \
debconf-set-selections && \
echo 'mysql-server mysql-server/root_password_again password root' | \
debconf-set-selections
# Procedemos ahora sí, a instalar mysql-server
RUN apt-get install -qqy mysql-server
# Preparamos Wordpress
# Obtenemos la última versión
# Descomprimimos
# Copiamos el contenido dentro del root del servidor
# Removemos el viejo index.html (mensaje de bienvenida de apache)
RUN wget http://wordpress.org/latest.tar.gz && \
tar xzvf latest.tar.gz && \
cp -R ./wordpress/* /var/www/html && \
rm /var/www/html/index.html
