Esta guía documenta los pasos necesarios para desplegar la aplicación DropMix en un entorno de producción utilizando Docker y Docker Compose.
- Docker y Docker Compose instalados en el servidor.
- Acceso a la terminal del servidor (SSH).
- (Opcional) Git para clonar el repositorio.
-
Clonar el repositorio o subir los archivos al servidor.
-
Configurar variables de entorno: Crea un archivo
.envbasado en.env.exampley asegura los siguientes valores para producción con SQLite:APP_ENV=production APP_DEBUG=false APP_URL=https://tu-dominio.com DB_CONNECTION=sqlite DB_DATABASE=/var/www/storage/database.sqlite QUEUE_CONNECTION=database SESSION_DRIVER=database
Nota: No configures
DB_HOST,DB_PORT,DB_USERNAME, niDB_PASSWORDsi usas SQLite. -
Permisos (Solo necesario si hay problemas): Si estás en un VPS Linux y tienes problemas de permisos con Docker, asegúrate de que tu usuario pertenece al grupo
docker:sudo usermod -aG docker $USER newgrp docker
Ejecuta el siguiente comando para construir las imágenes y levantar los contenedores en segundo plano:
docker compose -f docker-compose.prod.yml up -d --buildEsto iniciará los siguientes servicios:
app: Aplicación Laravel (PHP-FPM).webserver: Servidor Nginx.queue: Worker de colas.scheduler: Ejecutor de tareas programadas.
Si haces cambios en el código (git pull) o en la configuración, sigue estos pasos para desplegar la nueva versión:
- Bajar los cambios:
git pull origin main
- Reconstruir y reiniciar:
docker compose -f docker-compose.prod.yml up -d --build
Docker detectará los cambios y reconstruirá solo lo necesario.
Si necesitas asegurarte de que se instalan todas las dependencias desde cero (útil si hay errores extraños de build):
docker compose -f docker-compose.prod.yml build --no-cache
docker compose -f docker-compose.prod.yml up -d --force-recreatePara ejecutar cualquier comando de Laravel, usa exec app:
docker compose -f docker-compose.prod.yml exec app php artisan <comando>Si la configuración no se actualiza o hay errores extraños:
docker compose -f docker-compose.prod.yml exec app php artisan optimize:clearPara convertir a un usuario existente en administrador, utiliza el comando personalizado:
docker compose -f docker-compose.prod.yml exec app php artisan user:make-admin [email protected]Este comando buscará al usuario por correo electrónico y le asignará el rol de 'admin'.
Para ver los logs de la aplicación en tiempo real:
docker compose -f docker-compose.prod.yml logs -f appEl usuario del servidor web (www-data) no tiene permisos para escribir en el archivo SQLite o la carpeta storage.
Solución: Reinicia forzando la recreación de contenedores (el entrypoint arregla los permisos automáticamente):
docker compose -f docker-compose.prod.yml up -d --build --force-recreateTu usuario de Linux no tiene permisos para hablar con el demonio de Docker. Solución: Ejecuta los comandos del paso 1.3 (usermod y newgrp).