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, 9990 es $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.

En esta página

Última actualización el 25/09/2026 por Anonymous