Instalar Sylius con Docker
Sigue la guía de los stacks de Docker para instalar Sylius con nuestro stack y ten en cuenta lo propio de esta plataforma. El detalle completo está en el README del repositorio.
Recursos
El stack necesita unos 512 MB de RAM y 1 GB de disco para las imágenes. En reposo usa unos 400 MiB en total (PHP-FPM ~140 MiB, worker ~110 MiB, MariaDB ~135 MiB, Caddy ~16 MiB y cron ~6 MiB).
La imagen de Sylius se construye en tu servidor, por lo que el stack se levanta con docker compose up -d --build en vez de docker compose up -d. La primera construcción tarda unos 3 minutos y genera una imagen de unos 390 MB.
Variables obligatorias
| Variable | Qué debe contener |
|---|---|
SYLIUS_URL |
URL pública de la tienda, por ejemplo https://tienda.example.com. Se usa en los enlaces de los correos. |
SITE_ADDRESS |
El dominio de la tienda, por ejemplo tienda.example.com. |
APP_SECRET |
Clave secreta de Symfony. |
JWT_PASSPHRASE |
Frase de las claves JWT de las APIs. Si la cambias después de la instalación, necesitas generar claves nuevas. |
DB_PASSWORD y DB_ROOT_PASSWORD |
Contraseñas de la base de datos. |
SYLIUS_ADMIN_EMAIL y SYLIUS_ADMIN_PASSWORD |
Correo y contraseña del administrador. Se crea si no existe un usuario con ese correo (si cambias el correo después, se agrega otro administrador), y la contraseña solo se aplica al crearlo. |
SMTP_HOST |
Recomendada: el stack arranca sin ella, pero la plataforma no podrá enviar correos. Servidor SMTP. Completa también SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD, SMTP_FROM y SMTP_FROM_NAME según tu proveedor. SMTP_FROM también es el correo de contacto de la tienda, que se define solo al crearla. |
Sylius solo responde al dominio de SYLIUS_URL. Si la tienda también se usa con otro nombre (por ejemplo, www), agrégalo en SYLIUS_EXTRA_HOSTS.
Configuración inicial de la tienda
La tienda se crea configurada para Chile: idioma es_CL, moneda CLP, país CL con su zona, IVA de 19 % incluido en los precios, un método de envío gratuito “Despacho” y el pago “Transferencia bancaria”. Si vendes en otro país, ajusta antes del primer arranque SYLIUS_LOCALE, SYLIUS_CURRENCY, SYLIUS_COUNTRY, SYLIUS_ZONE_NAME, las variables SYLIUS_TAX_* y SYLIUS_PRICES_INCLUDE_TAX. Cada elemento se crea solo si no existe, y después se modifica desde el panel.
SYLIUS_LOCALE queda fijado en la imagen al construirla: si lo cambias, la imagen se vuelve a construir. Defínelo antes de la instalación inicial.
Acceso
Cuando setup termina, la tienda queda disponible en tu dominio, el panel de administración en /admin (con el usuario SYLIUS_ADMIN_EMAIL) y las APIs en /api/v2.
Actualizaciones
Sylius se actualiza cambiando la versión en el .env. Respalda primero y, si es una nueva versión menor, revisa el UPGRADE-2.x.md de Sylius. Luego cambia SYLIUS_VERSION (y SYLIUS_STANDARD_VERSION cuando haya un Sylius-Standard más nuevo) y ejecuta docker compose up -d --build: la imagen se reconstruye con la nueva versión y setup aplica las migraciones antes de que arranque PHP-FPM.
Reconstruye la imagen periódicamente con docker compose build --pull para recibir las correcciones de seguridad de PHP y Alpine.
Restaurar un respaldo
Los respaldos incluyen la base de datos, los archivos subidos y las claves (las claves JWT y la clave con la que Sylius cifra las credenciales de las pasarelas de pago). Para restaurar uno:
docker compose stop php worker cron
docker compose run --rm --no-deps backup restore <fecha>
docker compose up -d
La base de datos debe estar en ejecución (docker compose up -d db si el stack está detenido). La restauración borra primero todas las tablas, así que no queda nada de lo creado después del respaldo.
Notas
- Los precios son enteros en la unidad mínima de la moneda: como el CLP no tiene decimales,
9990es $9.990. - Un producto habilitado sin variantes hace fallar los listados de la tienda (error 500). Los productos creados desde el panel siempre tienen una.
- Las páginas de la tienda cargan el JavaScript de Adyen y Mollie desde sus CDN aunque no uses esos medios de pago.
Siguiente paso
Con Sylius funcionando, configúralo como origen de datos en BillMySales siguiendo la configuración inicial.