Añade README de despliegue y soporte Docker

- README.md: guía de instalación (venv, .env, migraciones, gunicorn) y notas de producción/seguridad
- Dockerfile: imagen Python 3.14 con deps de sistema para mysqlclient/Pillow
- docker-compose.yml: servicios web (Django+gunicorn) y db (MySQL 8.4) con las 4 BBDD
- docker/entrypoint.sh: espera a MySQL, migra, collectstatic y arranca gunicorn
- docker/mysql-init.sql: crea django_wow + bases acore_*
- .dockerignore y gunicorn en requirements

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 16:16:29 +00:00
parent f787b0d06e
commit b43b888f53
7 changed files with 243 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
set -e
# Espera a que MySQL esté disponible
if [ -n "$DB_HOST" ]; then
echo "Esperando a MySQL en $DB_HOST:${DB_PORT:-3306}..."
until nc -z "$DB_HOST" "${DB_PORT:-3306}"; do
sleep 1
done
echo "MySQL disponible."
fi
# Migraciones (solo la base 'default' del portal)
echo "Aplicando migraciones..."
python manage.py migrate --noinput
# Estáticos
echo "Recopilando archivos estáticos..."
python manage.py collectstatic --noinput
# Ejecuta el comando indicado (gunicorn por defecto)
exec "$@"
+14
View File
@@ -0,0 +1,14 @@
-- Crea las bases de datos que necesita el portal.
-- La del portal (django_wow) y las de AzerothCore.
-- Las de AzerothCore quedan vacías; en un entorno real las provee el core del juego.
CREATE DATABASE IF NOT EXISTS `django_wow` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `acore_auth` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `acore_characters` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS `acore_world` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Concede permisos al usuario de la aplicación sobre las 4 bases
GRANT ALL PRIVILEGES ON `django_wow`.* TO 'novawow'@'%';
GRANT ALL PRIVILEGES ON `acore_auth`.* TO 'novawow'@'%';
GRANT ALL PRIVILEGES ON `acore_characters`.* TO 'novawow'@'%';
GRANT ALL PRIVILEGES ON `acore_world`.* TO 'novawow'@'%';
FLUSH PRIVILEGES;