Blog de Gonzalo

CREAR ENTORNO LAMP EN DOCKER

Docker nos permite virtualizar entornos para trabajar en un mismo entorno con máquinas diferentes. Esto significa que si en un equipo de programación una persona desarolla en windows, otra en mac y otra en linux debian y el entorno de producción es linux ubuntu, los tres programadores puedan tener el entorno (contenedor) de producción, llamado en sus máquinas sin importar el sistema operativo que estén usando. En este post voy a explicar como crear entorno lamp en docker.
Voy a empezar a explicar como ejecutar php y apache en docker.
Vamos a empezar con un ejemplo sencillito:
Vamos a crear una carpeta que se llame src (por ejemplo) y dentro vamos a crear un fichero index.php donde pondremos un "echo" y el mensaje que querais.
Una vez que docker está instalado vamos a crear un fichero llamado Dockerfile que le va a indicar a docker para crear el contenedor.
Un contenedor es un entorno y en un ordenador se pueden tener varios contenedores y no van a colisionar ya que son independientes. Veamos un ejemplo de un contenedor:


FROM php:fauria/lamp

EXPOSE 80

  • FROM: Nos indica el entorno, es una "imagen" de lo que se va a instalar, que vamos a usar. En este caso es php 7.4.1 con apache. Los entornos disponibles están en la página https://hub.docker.com/search?q=php&type=image. Buscais lamp luego y en la sección de "overview" están las "Supported tags" y tenéis que copiar la que más os interese por versión
  • . Hay veces que las "Supported tags" no aparecen y están puestas en un enlace. Simplemente es seguir en enlace y copiar el tag que nos interese.
  • EXPOSE: indica desde que puerto se accede al contenedor. En nuestro caso se accede al puerto 80.

Al guardar el fichero Dockerfile vamos a la consola y ejecutamos el comando "docker build -t container-php ." donde "container-php" es el nombre del contenedor que va a crear docker. Sino se le asigna ningún nombre docker pero los contenedores se podrán gestionar mejor si tienen un nombre. El "." indica la ruta donde se encuentra el fichero Dockerfile, si estamos en la misma ruta que dicho fichero basta poner el "." sino se escribe la ruta donde se encuentre el fichero "Dockerfile". Al ejecutar el comando se descarga la imagen que le hemos indicado.
Una vez ha terminado de descargarse la imagen hay que ejecutar dicha imagen y se hace con el comando "docker run -p 80:80 container-php" donde le indicamos q nuestro puerto 80 va a llamar al puerto 80 del contenedor y le indicamos que vamos a ejecutar el contenedor especificado en el build del container que es "container-php". Al ejecutar, si vamos al navegador y ponemos "localhost", veremos el contenido del fichero index.php creado más arriba.
El problema que hay con esto es que si modificamos un fichero de nuestro proyecto habría que construir de nuevo nuestro contenedor. Lo que es muy tedioso. Y esto se soluciona usando volúmenes.
Los volúmenes que sincronizan el directorio de trabajo del host, nuestro ordenador, con la máquina virtual, el contenedor de docker. Para eso lo que se va a hacer es borrar todas las imágenes y para ejecutar la imagen con el volumen se hace con el comando "docker run -d -v RUTA_LOCAL_CODIGO:RUTA_PUBLICA_SERVIDOR -p 80:80 container-php" donde RUTA_LOCAL_CODIGO: ruta absoluta donde tenemos nuestro código y RUTA_PUBLICA_SERVIDOR: ruta donde apunta el servidor para que sea accesible por web.
Para parar el contenedor de docker tenemos que lanzar el comando "docker ps" para ver los contenedores activos y luego ejecutar "docker stop" y el id del contenedor que queremos parar.

Compartir en twitter