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 puedo 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. Seleccionais el primero y seleccionais los tags y esos tags es lo que tenéis que poner en el FROM.
  • 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. Si no 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 con 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.