En la anterior publicación vimos la instalación de Prestashop con Docker directamente , ahora vamos a aprovechar la funcionalidad de Docker Compose para realizar nuestra instalación cargando nuestra configuración en único fichero, esta configuración será la que se utilizará para crear, desplegar y apagar nuestras máquinas Docker, en este fichero configuraremos todas nuestras máquinas, esto nos permite manejar de una forma más sencilla y única nuestras máquinas Docker, el acceso a las diferentes máquinas se pude seguir realizando con Docker.

Cómo ya hemos explicado Prestashop es una de las plataformas de e-commerce más populares, sobre todo en España, la instalación y pruebas del e-commerce, las imágenes oficiales de Prestashop con Docker las podemos consultar en el Docker Hub de Prestashop.

En una explicación anterior explicaba ¿Qué es Docker Compose? , así que en este caso haré un resumen y lo veremos con la instalación de Prestashop.

Está publicación mostrará como crear con Docker Compose un entorno persistente con el trabajar nuestros proyectos con Prestashop

Índice

  1. Docker Compose
  2. Definición de la red (docker network)
  3. Servicio para el servidor de base de datos MySQL
  4. Servicio web con la imagen de Prestashop 1.7.8 con Apache
  5. Lanzamiento de los contenedores: docker-compose up
  6. Instalación de Prestashop
  7. Documentación y referencias

Software utilizado

  • Linux (Ubuntu 20.04 LTS): sistema operativo Linux con la versión de Ubuntu 20.04 LTS
  • Docker (docker): Docker version 20.10.11, esta guía se ha generado utilizando esta versión de Docker.
  • Docker Compose : versión 3.
  • PHP 7.4: en la instalación por defecto de Prestashop con Docker se hace con esta versión de Prestashop
  • Prestashop 1.7: instalamos la última versión disponible de Prestashop en las imagenes oficiales de Docker, en este caso Prestashop 1.7.8
  • Mysql 5.7: versión recomendada para instalar Prestashop 1.7

1. Docker Compose

Compose para Docker es una herramienta que nos permite definir y correr aplicaciones con multi contenedores, una vez definida la configuración mediante el comando docker-compose y sus parámetros podemos crear y lanzar las aplicaciones de forma conjunta y con una línea de comandos.

La configuración de Compose se realiza en un fichero con formato YAML, con la extensión yml, es decir, todos nuestros ficheros de configuración se denominarán: docker-compose.yml.

En la documentación oficial nos indican que en la creación de todo fichero de Docker Compose se puede establecer en 3 pasos:

  1. Creacion del fichero Dockerfile de nuestra aplicación: en nuestro ejemplo no lo crearemos nosotros ya que utilizaremos imágenes que ya están generadas tanto para MySQL como para Prestashop
  2. Creación de los servicios en el fichero docker-compose.yml con las indicaciones para la construcción y lanzamiento de nuestra aplicación: esto si lo haremos indicando las imágenes a utilizar para cada servicio.
  3. Comando docker-compose up: finalmente ya podremos utilizar el comando docker-compose up para crear y lanzar nuestra aplicación con multi contenedores.

2. Definición de la red

La configuración de red nos permite configurar los diferentes servicios interconectados, facilitando la comunicación directa entre los mismos.

Lo primero que tenemos que hacer es crear un fichero docker-compose.yml aquí será donde introduciremos la configuración de los contenedores Docker que necesitemos crear. Para ello y dada la configuración que vamos a utilizar te recomiendo que crees una carpeta donde incluir este fichero, y donde alojaremos la parte persistente de la aplicación que necesitemos.

La configuración básica para la red la realizamos con el elemento networks y dándole un nombre a la red en nuestro caso cx-prestashop-1.7.8-net que utilizaremos al definir los servicios para integrarlos en la red:

version: "3"
networks: 
    cx-prestashop-1.7.8-net:

La configuración de red nos permite muchas más cosas como por ejemplo:

Indicar el tipo de configuración de red con el driver, la configuración por defecto es en modo bridge, está se utiliza para ejemplos como el nuestro en el que tienes dos contenedores independientes pero que necesitas que se comuniquen, los tipos de red disponibles con Docker son:

  • bridge: configuración por defecto, como indicamos para tener comunicación entre dos contenedores independientes.
  • host: con está configuración eliminamos el aislamiento en el contenedor y la máquina host del mismo, pudiendo tener acceso directo.
  • overlay: permite conectar múltiples demonios docker y habilitar los servicios swarm para que se puedan comunicar.
  • ipvlan: te permite configurar completamente la configuración de red IPv4 o IPv6
  • macvlan: configuración que permite agregar una MAC a un contenedor.
  • none: se utilizar para deshabilitar la red completamente de un contenedor.

Si queremos indicar específicamente el modo brige lo añadiríamos en el fichero de la siguiente forma:

version: "3"
networks: 
    cx-prestashop-1.7.8-net:
      driver: brigde

Otro ejemplo sería definir el rango de ip en el que queremos trabajar, sería así:

version: "3"
networks: 
    cx-prestashop-1.7.8-net:
      driver: brigde
      ipam:
        config:
          - subnet: 199.99.97.0/24

También, podemos definir más de una red, por ejemplo, si quisieramos utilizar una para el backend y otra para el frontend, la documentación redes con Docker Compose puedes consultarla aquí: Networking in Docker Compose.

Estos son algunos ejemplos sencillos para que veas con que facilidad podemos añadir una configuración de rede más específica a nuestro contenedor si fuera necesario, en este enlace Docker Network tienes toda la documentación sobre networking con Docker Compose.

3. Servicio para el servidor de base de datos MySQL

El servicio para la base de datos MySQL lo vamos a definir con la configuración básica y con la creación de un volumen para que los datos de la base de datos sean persistentes.

Lo primero que utilizamos en nuestro fichero es la etiqueta services, que será donde definamos cada uno de nuestros servicios, en nuestro caso definermos dos: mysql para la base de datos y server para Prestashop.

La definición de nuestro servicio MySQL sería el siguiente, a continuación, explicamos los parámetros utilizados, su significado y que más configuraciones le podéis asignar a la base de datos MySQL desde el fichero docker-compose.yml:

services: 
    mysql:
        image: mysql:5.7
        container_name: cx-prestashop-1.7.8-mysql  
        tty: true
        ports:
            - "4206:3306"
        volumes:
            - "./var/lib/mysql/:/var/lib/mysql"
        environment: 
            MYSQL_ROOT_PASSWORD: tupassword 
        networks: 
            - cx-prestashop-1.7.8-net

Cómo se puede ver en la estructura dentro de los servicios definimos el de mysql, que es el nombre que le asignamos nosotros, y a continuación los parámetros:

  • image: mysql:5.7
    • Nombre de la imagen que utilizamos como base para la versión de Prestashop hemos escogido la 5.7, si quisieras utilizar otra simplemente consulta el Docker Hub oficial de MySQL para ver la versión disponible y cambiarla en el fichero de configuración.
  • container_name: cx-prestashop-1.7.8-mysql
    • Nombre que le asignamos a nuestro contenedor: cx-prestashop-1.7.8-mysql, y por el que nos podemos referir a él dentro de nuestra red, si los configuramos como es nuestro caso en modo bridge.
  • tty: true
  • ports:
    • Podemos definir un acceso exterior a nuestra base de datos, ya que con la configuración que hemos definido de red el contenedor no es accesible direcamente desde fuera. En este caso, asignamos el puerto exterior 4206 al puerto de la base de datos del contenedor 3306 (estándar MySQL).
  • volumes:
    • Asignamos un volumen para que los datos de nuestra base de datos sean persistentes:
      • «./var/lib/mysql/:/var/lib/mysql»
    • Al crear nuestra máquina creará dentro de la carpeta donde hemos creado el fichero docker-compose.yml todo el contenido de /var/lib/mysql, cualquier cambio que hagamos desde fuera se reflejará en el contenedor.
  • environment:
    • En enviroment definimos las variables de entorno, es decir, la configuración para nuestro servidor MySQL, en este caso sencillo, solo definimos las password para root, la configuración mínima:
      • MYSQL_ROOT_PASSWORD: tupassword
    • Por ejemplo, puedes definir una base de datos, o un usuario y su password con:
      • MYSQL_DATABASE: esto te permite definir un base de datos que se creará al crear el contenedor Docker.
      • MYSQL_USERMYSQL_PASSWORD: creación de un usuario y su password, con la que tendrá acceso a la base de datos que definamos en MYSQL_DATABASE.
      • Puedes consultar más parámetros de entorno en el  Docker Hub oficial de MySQL.
  • networks:
    • Como ya dijimos anteriormente asignamos el contenedor MySQL a la red definida para este entorno: cx-prestashop-1.7.8-net

4. Servicio web con la imagen de Prestashop 1.7.8 con Apache

En este caso el servicio que alojará Prestashop y el servidor web lo denominamos server, en el utilizaremos la imagen de Docker Hub prestashop/prestashop:1.7.8 que viene con la versión de PHP 7.4.26 y Apache 2 , también podríamos especificar la versión de PHP y de Prestashop a utilizar, no están todas las combinaciones disponibles, pero si bastantes por ejemplo:

  • 1.7-7.3-apache: versión 1.7 de Prestashop con PHP 7.3 con Apache
  • 1.7-7.2-apache: versión 1.7 de Prestashop con PHP 7.2 con Apache

Al igula que antes vamos a ver la definición del servicios por completo y después lo explicamos:

services:
    ...
    server:
        image: prestashop/prestashop:1.7.8
        container_name: cx-prestashop-1.7.8
        ports:
            - "4280:80"
        volumes:
            - "./var/www/html/:/var/www/html" 
        environment:
            DB_SERVER: cx-prestashop-1.7.8-mysql 
        depends_on:  
            - mysql
        networks: 
            - cx-prestashop-1.7.8-net

Cómo se puede ver la estructura es básica, pero suficiente para nuestro propósito veamos los detalles:

  • image: prestashop/prestashop:1.7.8
    • Indicamos la imagen que queremos utilizar en este caso prestashop:1.7.8, si quieres utilizar otra simplemente cambia el nombre de la versión y verifica las compatibilidades con la base de datos que utilices.
  • container_name:
    • Le damos un nombre a nuestro contenedor en mi caso: cx-prestashop-1.7.8; esto es útil para acceder directamente al contenedor desde Docker por ejemplo.
  • ports:
    • Podemos definir un acceso exterior a Prestashop, para que por ejemplo accedamos por navegador desde nuestro equipo host, con la configuración que hemos definido de red el contenedor no es accesible direcamente desde fuera. En este caso, asignamos el puerto exterior 4280 al puerto del servidor web Apache en el contenedor 80.
    • Así, desde nuesto navegador podremos acceder como local: http://localhost:4280.
  • volumes:
    • Ruta del volumen exterior en este caso donde se aloja el Prestashop con ello tendremos acceso exterior en nuestra carpeta, y además, el contenido será persistente: «./var/www/html/:/var/www/html»
  • environment:
    • DB_SERVER: cx-prestashop-1.7.8-mysql
  • depends_on:
    • Como nuestro servicio con Prestashop necesita la base datos que tenemos en el servicio mysql, debemos indicar la depencia ya que en el caso de que haya algún problema con el servicio de la base de datos este servicio lo tenga en cuenta.
  • networks:
    • Asignamos el contenedor que incluye Prestashop definido en el servicio server a la red cx-prestashop-1.7.8-net

5. Lanzamiento de los contenedores: docker-compose up

Ahora si unimos todo ya tenemos definido nuestro fichero docker-compose.yml con la configuración necesario para lanzar e instalar Prestashop, veamos el fichero final:

version: "3"
networks: 
    cx-prestashop-1.7.8-net:

services: 
    mysql:
        image: mysql:5.7
        container_name: cx-prestashop-1.7.8-mysql  
        tty: true
        ports:
            - "4206:3306"
        volumes:
            - "./var/lib/mysql/:/var/lib/mysql"
        environment: 
            MYSQL_ROOT_PASSWORD: tupassword 
        networks: 
            - cx-prestashop-1.7.8-net
    server:
        image: prestashop/prestashop:1.7.8
        container_name: cx-prestashop-1.7.8
        ports:
            - "4280:80"
        volumes:
            - "./var/www/html/:/var/www/html" 
        environment:
            DB_SERVER: cx-prestashop-1.7.8-mysql 
        depends_on:  
            - mysql
        networks: 
            - cx-prestashop-1.7.8-net

Lanzamos nuestros contenedores Docker compose utilizando el comando up si queremos ver por consola la información de los servidores no incluimos nada más, si queremos que se ejecuten en background y con funcionamiento independiente añadimos -d. Así ya tenemos los dos comandos básicos:

  • Lanzamiento: docker-compose up -d
$ docker-compose up -d
 Creating cx-prestashop-1.7.8-mysql … done
 Creating cx-prestashop-1.7.8         … done
  • Parada: docker-compose down
$ docker-compose down
 Stopping cx-prestashop-1.7.8       … done
 Stopping cx-prestashop-1.7.8-mysql … done
 Removing cx-prestashop-1.7.8       … done
 Removing cx-prestashop-1.7.8-mysql … done
 Removing network cx-docker-prestashop-178_cx-prestashop-1.7.8-net

Para consultar el log de los servidores tenemos docker-compose logs , en mi caso:

Attaching to cx-prestashop-1.7.8, cx-prestashop-1.7.8-mysql
 cx-prestashop-1.7.8-mysql | 2022-01-03 09:32:14+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.34-1debian10 started.
 cx-prestashop-1.7.8-mysql | 2022-01-03 09:32:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
 cx-prestashop-1.7.8-mysql | 2022-01-03 09:32:14+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.34-1debian10 started.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.497096Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.497980Z 0 [Note] mysqld (mysqld 5.7.34) starting as process 1 …
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499652Z 0 [Note] InnoDB: PUNCH HOLE support available
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499660Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499663Z 0 [Note] InnoDB: Uses event mutexes
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499666Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499668Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499671Z 0 [Note] InnoDB: Using Linux native AIO
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499901Z 0 [Note] InnoDB: Number of pools: 1
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.499997Z 0 [Note] InnoDB: Using CPU crc32 instructions
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.501063Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.505765Z 0 [Note] InnoDB: Completed initialization of buffer pool
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.507074Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.518106Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.522637Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.522692Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait …
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.533140Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.533549Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.533558Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.533834Z 0 [Note] InnoDB: 5.7.34 started; log sequence number 12664660
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.533962Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.534123Z 0 [Note] Plugin 'FEDERATED' is disabled.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.535225Z 0 [Note] InnoDB: Buffer pool(s) load completed at 220103  9:32:14
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537334Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537343Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537659Z 0 [Warning] CA certificate ca.pem is self signed.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537676Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537944Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537984Z 0 [Note] IPv6 is available.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.537992Z 0 [Note]   - '::' resolves to '::';
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.538000Z 0 [Note] Server socket created on IP: '::'.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.538847Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.543127Z 0 [Note] Event Scheduler: Loaded 0 events
 cx-prestashop-1.7.8-mysql | 2022-01-03T09:32:14.543261Z 0 [Note] mysqld: ready for connections.
 cx-prestashop-1.7.8-mysql | Version: '5.7.34'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * Setting up install lock file…
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * Reapplying PrestaShop files for enabled volumes …
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * No pre-install script found, let's continue…
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * No post-install script found, let's continue…
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * Setup completed, removing lock file…
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * Almost ! Starting web server now
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | 
 cx-prestashop-1.7.8 | * No init script found, let's continue…
 cx-prestashop-1.7.8 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.26.0.3. Set the 'ServerName' directive globally to suppress this message
 cx-prestashop-1.7.8 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.26.0.3. Set the 'ServerName' directive globally to suppress this message
 cx-prestashop-1.7.8 | [Mon Jan 03 09:32:14.904816 2022] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.51 (Debian) configured -- resuming normal operations
 cx-prestashop-1.7.8 | [Mon Jan 03 09:32:14.904839 2022] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

6. Instalar Prestashop con Docker Compose

Una vez ya hemos creado los contenedores para empezar con la instalación accedemos desde nuestro navegador a http://localhost:4280/ una vez cargada la página si todo fue bien, realizamos una instalación de Prestashop genérica:

Paso 1: Selección de idioma en instalación Docker Prestashop

Selección de idioma y pasamos al siguiente paso como se muestra en la imagen:

Docker Compose - Prestashop - 01 -Selección de idioma
Docker Compose – Prestashop – 01 -Selección de idioma

Paso 2: Aceptar licencia en instalación Docker Prestashop

Acuerdo de licencia, aceptamos y seguimos:

Docker Compose -Prestashop - 02 - Aceptación licencia
Docker Compose -Prestashop – 02 – Aceptación licencia

Paso 3: Información de la tienda en instalación Docker Prestashop

Nombre de nuestra tienda, configuración de accesos a la administración con un email y una contraseña:

Docker Compose - Prestashop - 03 - Información de la tienda
Docker Compose – Prestashop – 03 – Información de la tienda

Paso 4: Dirección del servidor MySQL en la instalación Docker Prestashop

En este paso configuramos el acceso a la base de datos MySQL, gracias a que hemos configurado una red con Docker, ahora tenemos acceso entre los contenedores por eso en la dirección del servidor de base de datos podemos poner directamente el nombre del contenedor en mi caso: cx-prestashop-1.7.8-mysql

Docker Compose - Prestashop - 04 - Configuración de la base de datos
Docker Compose – Prestashop – 04 – Configuración de la base de datos

Comprobamos la conexión y si todo está Ok seguimos:

Docker-Compose-Prestashop-05-Conexion-Ok-base-de-datos-no-existe
Docker Compose – Prestashop – 05 – Conexion Ok base de datos no existe

Paso 5: Crear base de datos en instalación Docker Prestashop

Como no hemos creado la base de datos en nuestro servidor MySQL, la creamos desde la instalación de Prestashop:

Docker Compose - Prestashop - 06 - Base  de datos creada exitosamente
Docker Compose – Prestashop – 06 – Base de datos creada exitosamente

Paso 6: Base de datos creada, instalamos Prestashop con Docker

Prestashop nos confirma que la creación de la base de datos ha sido existosa y realizamos ya la instalación, con la creación de las tablas, ….

Paso 7: Instalación de Prestashop con Docker finalizada

Si todo ha ido bien llegamos a este último paso, donde ya solo tendrás que eliminar la carpeta install, y cambiar el nombre de la carpeta admin.

Esto lo podemos hacer de dos formas:

  1. Desde fuera del contedor: como hemos creado un volumen tenemos acceso a la carpeta de instalación de Prestashop:
    • Paso 1: vamos a nuestra carpeta en mi caso dentro de mi directorio tengo una carpeta var/www/html, accedo ahí y con permisos de superusuario
    • Paso 2: eliminar carpeta install:
      • sudo rm -r install
    • Paso 2: cambiar el nombre a la carpeta admin:
      • sudo mv admin admin-cx-presta
  2. Desde dentro del contendor: accedemos al contedor de Prestashop, accesmo a /var/www/html/ , y desde ahí, eliminamos install y cambiamos el nombre a la carpeta admin:
    • Paso 1: accedemos al contenedor de Prestashop:
      • docker exec -it cx-prestashop-1.7.8 bash
      • Con este comando accedemos al contenedor en la carpeta /var/www/html/, en este caso ya accedo al contenedor como superusuario.
    • Paso 2: eliminar carpeta install:
      • rm -r install
    • Paso 3: cambiar el nombre a la carpeta admin:
      • mv admin admin-cx-presta

6.1. Árbol de la instalación con Docker Compose

Con nuestra instalación finalizada el árbol del proyecto sería el siguiente: <

Docker Compose - Prestashop - Árbol  de la instalación finalizada
Docker Compose – Prestashop – Árbol de la instalación finalizada

A partir de aquí ya es cosa tuya seguir con la instalación de Prestashop.

Código Xules.

7. Documentación

Estos son los enlaces principales a la documentación de referencia para esta guía: