Instalar Magento con Docker
Sigue la guía de los stacks de Docker para instalar Magento con nuestro stack y ten en cuenta lo propio de esta plataforma. El detalle completo está en el README del repositorio.
El stack instala Mage-OS, la distribución comunitaria de Magento Open Source, que no requiere claves de Adobe Marketplace.
Recursos
Es el stack más exigente: asigna 8 GB de RAM a Docker (con 4 GB el sistema detuvo procesos durante la instalación) y reserva unos 5 GB de disco para imágenes y volúmenes, más espacio para las construcciones. En reposo usa cerca de 1,4 GiB, de los cuales OpenSearch ocupa unos 960 MiB. El primer up construye la imagen y tarda entre 5 y 7 minutos.
OpenSearch bloquea la creación de índices cuando su disco supera el 95 % de uso, así que no dejes que el servidor se quede sin espacio.
Variables obligatorias
| Variable | Qué debe contener |
|---|---|
MAGE_URL |
URL pública de la tienda, por ejemplo https://tienda.example.com. |
SITE_ADDRESS |
El dominio de la tienda, por ejemplo tienda.example.com. |
DB_PASSWORD y DB_ROOT_PASSWORD |
Contraseñas de la base de datos. |
MAGE_ADMIN_PASSWORD |
Contraseña del administrador: letras y números, de al menos 7 caracteres. |
MAGE_ADMIN_EMAIL |
Correo del administrador. El usuario, la contraseña y el correo del administrador solo se usan al instalar: si los cambias después en el .env, la cuenta no cambia (hazlo desde el panel). |
MAGE_ADMIN_PATH |
Ruta del panel de administración (letras, números y guiones bajos). Usa una difícil de adivinar, por ejemplo admin_$(openssl rand -hex 4). |
SMTP_HOST |
Recomendada: el stack arranca sin ella, pero la plataforma no podrá enviar correos. Servidor SMTP. Completa también SMTP_PORT, SMTP_SECURE (por defecto tls), SMTP_USER, SMTP_PASSWORD y SMTP_FROM según tu proveedor. |
Configuración inicial de la tienda
La tienda se crea con país CL, moneda CLP y zona horaria America/Santiago, en idioma en_US. Cambia MAGE_COUNTRY, MAGE_CURRENCY, MAGE_LOCALE, PHP_TIMEZONE (y el nombre en MAGE_STORE_NAME) antes del primer arranque: estos valores solo se aplican en la instalación inicial y después se modifican desde el panel. PHP_TIMEZONE además define la zona horaria de PHP en cada arranque.
Solo viene instalado en_US. Otros idiomas requieren paquetes de idioma, y cada idioma o tema que use la tienda o un administrador debe estar en MAGEOS_LOCALES y MAGEOS_THEMES, porque el contenido estático se genera al construir la imagen.
Acceso
Cuando setup termina, la tienda queda disponible en tu dominio y el panel de administración en /<MAGE_ADMIN_PATH>, con el usuario admin (configurable con MAGE_ADMIN_USER).
La autenticación de dos factores está activa: en el primer ingreso el panel te pide configurar un proveedor (Google Authenticator por defecto) mediante un enlace que llega por correo, así que configura SMTP antes de ingresar.
Actualizaciones
Mage-OS se actualiza cambiando MAGEOS_VERSION en el .env y ejecutando:
docker compose up -d --build
Se construye una imagen nueva y setup sincroniza el código y actualiza la base de datos (setup:upgrade). Respalda antes de actualizar. Lo mismo aplica si reconstruyes la imagen con otros módulos, temas o idiomas.
Restaurar un respaldo
Los respaldos incluyen la base de datos, los archivos subidos (pub/media) y app/etc/env.php, que guarda la clave de cifrado necesaria para leer los datos secretos almacenados. El código viene de la imagen y los índices de búsqueda se regeneran. Para restaurar uno:
docker compose stop magento cron
docker compose run --rm --no-deps backup restore <fecha>
docker compose up -d
docker compose run --rm console cache:flush
docker compose run --rm console indexer:reindex
El último comando solo es necesario si los resultados de búsqueda quedan desactualizados.
Notas
- Para abrir una consola en el contenedor usa
docker compose exec -u www-data magento sh: los archivos creados como root envar/opub/mediadejan a Magento con errores hasta el siguientesetup. - Los comandos de
bin/magentose ejecutan condocker compose run --rm console <comando>.
Siguiente paso
Con la tienda funcionando, instala el plugin de BillMySales y conéctalo a tu pasarela de facturación siguiendo la configuración inicial.