Repositorio git: https://github.com/FranJaviMN/Docker-php/tree/main/Tarea%204
Tarea 4: Ejecución de un CMS en dockerPermalink
-
A partir de una imagen base (que no sea una imagen con el CMS), genera una imagen que despliegue un CMS PHP (que no sea wordpress).
-
Crea los volúmenes necesarios para que la información que se guarda sea persistente.
Para ello vamos a usar el CMS de Drupal por lo que vamos a necesitar de nuevo dos directorios, uno llamado Deploy donde tendremos nuestro fichero docker-compose y otro directorio llamado Build
Creamos nuestra imagen
Para ello vamos a usar una imagen debian en la cual vamos a instalar tanto apache2 como php. Ademas debemos de llevar el fichero descargado a nuestro contenedor donde vamos a tener nuestro CMS:
FROM debian
RUN apt-get update && apt-get install -y apache2 libapache2-mod-php7.3 php7.3 php7.3-mysql php-xml php-gd php-mysql php-mbstring && apt-get clean && rm -rf /var/lib/apt/lists/*
RUN rm /var/www/html/index.html && a2enmod rewrite
EXPOSE 80
COPY ./drupal-9.1.4 /var/www/html
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Como vemos ya tenemos nuestro fichero dockerfile vamos a generar la imagen que vamos a usar en nuestro ejercicio, para ello usamos el siguiente comando de docker:
#### Creamos la nueva imagen ####
francisco@debian10:~/Documentos/Implantacion/Docker/Docker-php/Tarea 4/Build$ docker build -t franjavimn/drupal-tarea4:v1 .
#### Listamos las imagenes para ver si se ha creado ####
francisco@debian10:~/Documentos/Implantacion/Docker/Docker-php/Tarea 4/Build$ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
franjavimn/drupal-tarea4 v1 89aa79d074c2 About a minute ago 320MB
Creacion de docker-compose
Ahora que ya tenemos nuestra imagen ya creada vamos a proceder a crear nuestro nuevo fichero docker-compose.yml en el que vamos a definir nuestra base de datos la cual va a ser una base de datos mariadb y vamos a definir la creación del contenedor con la imagen que hemos generado anteriormente:
version: "3.1"
services:
db:
container_name: servidor_mysql-drupal
image: mariadb
restart: always
environment:
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
MYSQL_ROOT_PASSWORD: franciscojavier
volumes:
- /opt/mysql_drupal:/var/lib/mysql
drupal:
container_name: drupal
image: franjavimn/drupal-tarea4:v1
restart: always
ports:
- 8084:80
volumes:
- /opt/drupal:/var/log/apache2
Una vez hecho esto solo debemos de ejecutar nuestro escenario ya tendriamos nuestro CMS de drupal desplegado, solo faltaria instalarlo y estaria listo:
#### Ejecutamos el fichero docker-compose ####
francisco@debian10:~/Documentos/Implantacion/Docker/Docker-php/Tarea 4/Deploy$ docker-compose up -d
#### Comprobamos que esta iniciado ####
Name Command State Ports
-------------------------------------------------------------------------------------
drupal /usr/sbin/apache2ctl -D FO ... Up 0.0.0.0:8084->80/tcp
servidor_mysql-drupal docker-entrypoint.sh mysqld Up 3306/tcp
Una vez hecho esto solo debemos de irnos a nuestro navegador y solo debemos de entrar en localhost:8084: