- Buscar la información de PrestaShop en https://hub.docker.com/r/prestashop/prestashop/
donde tendremos la información de cómo crear el documento .yml - Con toda la información anterior podemos crear nuestro docker-compose.yml
version: '3.3' services: db_prestashop: image: mysql:5.7 ports: - "3307:3306" volumes: - db_data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=prestashop - MYSQL_DATABASE=prestashop - MYSQL_USER=prestashop - MYSQL_PASSWORD=prestashop presta: depends_on: - db_prestashop image: prestashop/prestashop:latest ports: - "8080:80" volumes: - './web:/var/www/html' environment: DB_SERVER: db_prestashop DB_USER: prestashop DB_PASSWORD: prestashop DB_NAME: prestashop volumes: db_data: {}
- Esta configuración de Docker Compose permite ejecutar PrestaShop junto con una base de datos MySQL en contenedores Docker.
A continuación, explicaré las partes más importantes del archivo:
Esta línea indica la versión de la sintaxis de Docker Compose que se está utilizando.version: '3'
La sección services es donde se definen los servicios de contenedores que se ejecutarán como parte de esta aplicación.services:
prestashop es el nombre del servicio de PrestaShop.prestashop: image: prestashop/prestashop:1.7 ports: - "8080:80"
image especifica la imagen Docker a utilizar, en este caso, se utiliza la imagen oficial de PrestaShop versión 1.7.
ports indica que el puerto 80 del contenedor se mapea al puerto 8080 del host. Esto significa que PrestaShop será accesible en http://localhost:8080.environment establece las variables de entorno necesarias para la configuración de PrestaShop. PrestaShop necesita conocer la información de la base de datos, como la dirección del servidor (DB_SERVER), el usuario de la base de datos (DB_USER), la contraseña (DB_PASSWD) y el nombre de la base de datos (DB_NAME).environment: - DB_SERVER=prestashop-db - DB_USER=prestashop - DB_PASSWD=prestashop - DB_NAME=prestashop
depends_on asegura que el servicio de PrestaShop se inicie después de que el servicio de la base de datos (prestashop-db) esté en funcionamiento. Esto garantiza que la base de datos esté disponible cuando PrestaShop se inicie.depends_on: - prestashop-db
volumes permite montar un volumen llamado prestashop-data en el directorio /var/www/html del contenedor de PrestaShop. Esto se utiliza para persistir los datos de PrestaShop, como archivos, configuraciones, etc.volumes: - prestashop-data:/var/www/html
prestashop-db es el nombre del servicio de la base de datos. Se utiliza la imagen oficial de MySQL versión 5.7 para la base de datos.prestashop-db: image: mysql:5.7
Al igual que con PrestaShop, se configuran variables de entorno para la base de datos, incluyendo la contraseña del usuario root (MYSQL_ROOT_PASSWORD), el nombre de usuario de la base de datos (MYSQL_USER), la contraseña (MYSQL_PASSWORD) y el nombre de la base de datos (MYSQL_DATABASE).environment: - MYSQL_ROOT_PASSWORD=root_password - MYSQL_USER=prestashop - MYSQL_PASSWORD=prestashop - MYSQL_DATABASE=prestashop
Similar a PrestaShop, un volumen llamado mysql-data se monta en el directorio /var/lib/mysql del contenedor de la base de datos para persistir los datos de la base de datos.volumes: - mysql-data:/var/lib/mysql
Finalmente, se definen los volúmenes prestashop-data y mysql-data que se utilizan para persistir los datos de PrestaShop y la base de datos.volumes: prestashop-data: mysql-data:
En resumen, este archivo docker-compose.yml configura dos servicios: uno para PrestaShop y otro para la base de datos MySQL. Estos servicios se comunican entre sí para permitir que PrestaShop funcione con una base de datos persistente. Al ejecutar docker-compose up -d, se crearán y pondrán en marcha los contenedores, permitiéndote acceder a una tienda PrestaShop en http://localhost:8080. Asegúrate de ajustar las contraseñas y otros detalles de configuración según tus necesidades antes de utilizarlo en un entorno de producción. - Para lanzarlo en la terminal se escribe el siguiente comando:
docker compose up -d
- Comprobación de la conexión a la base de datos:
- Para probarlo se debe colocar en el buscador web: localhost:80 o mi ip (http://10.0.9.17:8080)