Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
*.sh text eol=lf
8 changes: 5 additions & 3 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ services:
- mysql_data:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "wordpress", "-pwordpress"]
interval: 5s
timeout: 10s
retries: 20
start_period: 30s

# phpMyAdmin para gestión de base de datos
phpmyadmin:
Expand Down
12 changes: 8 additions & 4 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
#!/bin/bash
set -e

echo "🚀 Iniciando contenedor de WordPress..."

# Ejecutar el entrypoint original de WordPress
docker-entrypoint.sh "$@" &

# Obtener el PID del proceso de WordPress
WORDPRESS_PID=$!

# Esperar un poco para que WordPress se inicie
sleep 10
echo "⏳ Esperando a que WordPress se inicie..."
# Esperar más tiempo para que WordPress se inicie completamente
sleep 30

# Ejecutar la inicialización en segundo plano
/docker-scripts/init-wordpress.sh &
echo "🔧 Ejecutando script de inicialización de WordPress..."
# Ejecutar la inicialización en segundo plano con logging
/docker-scripts/init-wordpress.sh 2>&1 | tee /tmp/init-wordpress.log &

# Esperar a que WordPress termine
wait $WORDPRESS_PID
132 changes: 91 additions & 41 deletions docker/init-wordpress.sh
Original file line number Diff line number Diff line change
@@ -1,33 +1,76 @@
#!/bin/bash

# Script para inicializar WordPress automáticamente
set -e
# NO usar 'set -e' para manejar errores manualmente
set +e

echo "🚀 Iniciando configuración automática de WordPress..."
echo "📅 $(date)"

# Esperar a que MySQL esté listo
# Esperar a que MySQL esté listo con timeout
echo "⏳ Esperando a que MySQL esté disponible..."
while ! mysqladmin ping -h"mysql" -u"wordpress" -p"wordpress" --silent; do
sleep 1
MYSQL_TIMEOUT=120 # 2 minutos
MYSQL_COUNTER=0
MYSQL_READY=false

while [ $MYSQL_COUNTER -lt $MYSQL_TIMEOUT ]; do
if mysqladmin ping -h"mysql" -u"wordpress" -p"wordpress" --skip-ssl --silent 2>/dev/null; then
MYSQL_READY=true
echo "✅ MySQL está listo (después de ${MYSQL_COUNTER} segundos)"
break
fi

if [ $((MYSQL_COUNTER % 10)) -eq 0 ]; then
echo " ⏱️ Esperando MySQL... (${MYSQL_COUNTER}/${MYSQL_TIMEOUT}s)"
fi

sleep 2
MYSQL_COUNTER=$((MYSQL_COUNTER + 2))
done
echo "✅ MySQL está listo"

# Esperar a que WordPress esté disponible
if [ "$MYSQL_READY" = false ]; then
echo "❌ ERROR: MySQL no está disponible después de ${MYSQL_TIMEOUT} segundos"
echo "❌ Verifica que el contenedor de MySQL esté corriendo correctamente"
echo "💡 Ejecuta: docker compose logs mysql"
exit 1
fi

# Esperar a que WordPress esté disponible con timeout
echo "⏳ Esperando a que WordPress esté disponible..."
while ! curl -s http://localhost > /dev/null; do
WP_TIMEOUT=60 # 1 minuto
WP_COUNTER=0
WP_READY=false

while [ $WP_COUNTER -lt $WP_TIMEOUT ]; do
if curl -s http://localhost > /dev/null 2>&1; then
WP_READY=true
echo "✅ WordPress está disponible (después de ${WP_COUNTER} segundos)"
break
fi

if [ $((WP_COUNTER % 10)) -eq 0 ]; then
echo " ⏱️ Esperando WordPress... (${WP_COUNTER}/${WP_TIMEOUT}s)"
fi

sleep 2
WP_COUNTER=$((WP_COUNTER + 2))
done
echo "✅ WordPress está disponible"

if [ "$WP_READY" = false ]; then
echo "❌ ERROR: WordPress no está disponible después de ${WP_TIMEOUT} segundos"
echo "❌ Verifica que Apache esté corriendo correctamente"
exit 1
fi

# Verificar si WordPress ya está instalado
if wp core is-installed --allow-root --path=/var/www/html; then
if wp core is-installed --allow-root --path=/var/www/html --quiet 2>/dev/null; then
echo "✅ WordPress ya está instalado"

# Actualizar WordPress a la última versión
echo "🔄 Verificando actualizaciones de WordPress..."
if wp core check-update --allow-root --path=/var/www/html --format=count; then
if wp core check-update --allow-root --path=/var/www/html --format=count --quiet 2>/dev/null | grep -q "^[1-9]"; then
echo "📥 Actualizando WordPress a la última versión..."
wp core update --allow-root --path=/var/www/html
wp core update --allow-root --path=/var/www/html --quiet 2>/dev/null
echo "✅ WordPress actualizado correctamente"
else
echo "✅ WordPress ya está en la última versión"
Expand All @@ -43,73 +86,80 @@ else
--admin_password="test" \
--admin_email="[email protected]" \
--allow-root \
--path=/var/www/html
--path=/var/www/html \
--quiet 2>/dev/null

echo "✅ WordPress instalado correctamente"

# Actualizar WordPress a la última versión después de la instalación
echo "🔄 Actualizando WordPress a la última versión..."
wp core update --allow-root --path=/var/www/html
wp core update --allow-root --path=/var/www/html --quiet 2>/dev/null
echo "✅ WordPress actualizado a la última versión"
fi

# Desinstalar plugins por defecto de WordPress
echo "🗑️ Desinstalando plugins por defecto..."
wp plugin delete hello-dolly --allow-root --path=/var/www/html || echo "⚠️ Hello Dolly ya no está instalado"
wp plugin delete akismet --allow-root --path=/var/www/html || echo "⚠️ Akismet ya no está instalado"
wp plugin delete hello-dolly --allow-root --path=/var/www/html --quiet 2>/dev/null || true
wp plugin delete akismet --allow-root --path=/var/www/html --quiet 2>/dev/null || true
echo "✅ Plugins por defecto eliminados"

# Activar el framework Antonella
echo "🔌 Activando Antonella Framework..."
wp plugin activate antonella-framework --allow-root --path=/var/www/html || echo "⚠️ Plugin antonella-framework no encontrado, asegúrate de que esté en la carpeta correcta"
# Activar el framework Antonella (si existe)
echo "🔌 Verificando Antonella Framework..."
if wp plugin list --name=antonella-framework --allow-root --path=/var/www/html --format=count 2>/dev/null | grep -q "1"; then
wp plugin activate antonella-framework --allow-root --path=/var/www/html 2>/dev/null && echo "✅ Antonella Framework activado" || echo "⚠️ No se pudo activar antonella-framework"
else
echo "ℹ️ Plugin antonella-framework no encontrado (se activará cuando esté disponible)"
fi

# Instalar y activar Plugin Check
echo "📥 Instalando Plugin Check..."
wp plugin install plugin-check --activate --allow-root --path=/var/www/html

# Instalar otros plugins útiles para desarrollo
echo "📥 Instalando plugins adicionales para desarrollo..."
echo "📥 Instalando plugins de desarrollo..."
wp plugin install plugin-check --activate --allow-root --path=/var/www/html --quiet 2>/dev/null || true

# Query Monitor - Para debugging
wp plugin install query-monitor --activate --allow-root --path=/var/www/html
wp plugin install query-monitor --activate --allow-root --path=/var/www/html --quiet 2>/dev/null || true

# Debug Bar - Para debugging adicional
wp plugin install debug-bar --activate --allow-root --path=/var/www/html
wp plugin install debug-bar --activate --allow-root --path=/var/www/html --quiet 2>/dev/null || true

# Theme Check - Para verificar temas
wp plugin install theme-check --activate --allow-root --path=/var/www/html
wp plugin install theme-check --activate --allow-root --path=/var/www/html --quiet 2>/dev/null || true

# Developer - Herramientas de desarrollo
wp plugin install developer --activate --allow-root --path=/var/www/html
echo "✅ Plugins de desarrollo instalados"

# Configurar tema por defecto
echo "🎨 Configurando tema..."
wp theme activate twentytwentyfour --allow-root --path=/var/www/html
wp theme activate twentytwentyfour --allow-root --path=/var/www/html --quiet 2>/dev/null || true
echo "✅ Tema configurado"

# Configurar permalinks
echo "🔗 Configurando permalinks..."
wp rewrite structure '/%postname%/' --allow-root --path=/var/www/html
wp rewrite flush --allow-root --path=/var/www/html
wp rewrite structure '/%postname%/' --allow-root --path=/var/www/html --quiet 2>/dev/null
wp rewrite flush --allow-root --path=/var/www/html --quiet 2>/dev/null
echo "✅ Permalinks configurados"

# Corregir permisos de WordPress para actualizaciones
echo "🔧 Corrigiendo permisos de WordPress..."
chown -R www-data:www-data /var/www/html/wp-content/
chmod -R 755 /var/www/html/wp-content/
chmod -R 775 /var/www/html/wp-content/uploads/
chmod -R 775 /var/www/html/wp-content/upgrade/
echo "✅ Permisos de WordPress corregidos"
# Excluir directorios montados del host para evitar errores de permisos en Linux
find /var/www/html/wp-content/ -maxdepth 1 -type d ! -name 'plugins' ! -name 'debug.log' -exec chown -R www-data:www-data {} + 2>/dev/null || true
find /var/www/html/wp-content/ -maxdepth 1 -type d ! -name 'plugins' ! -name 'debug.log' -exec chmod -R 755 {} + 2>/dev/null || true

# Crear y dar permisos a directorios necesarios
mkdir -p /var/www/html/wp-content/uploads /var/www/html/wp-content/upgrade 2>/dev/null || true
chown -R www-data:www-data /var/www/html/wp-content/uploads /var/www/html/wp-content/upgrade 2>/dev/null || true
chmod -R 775 /var/www/html/wp-content/uploads /var/www/html/wp-content/upgrade 2>/dev/null || true
echo "✅ Permisos de WordPress configurados"

# Configurar opciones de desarrollo
echo "⚙️ Configurando opciones de desarrollo..."
wp option update blog_public 0 --allow-root --path=/var/www/html # No indexar por motores de búsqueda
wp option update users_can_register 1 --allow-root --path=/var/www/html # Permitir registro de usuarios
wp option update blog_public 0 --allow-root --path=/var/www/html --quiet 2>/dev/null
wp option update users_can_register 1 --allow-root --path=/var/www/html --quiet 2>/dev/null
echo "✅ Opciones de desarrollo configuradas"

# Crear contenido de ejemplo
echo "📝 Creando contenido de ejemplo..."
wp post create --post_type=page --post_title="Página de Prueba Antonella" --post_content="Esta es una página de prueba para el framework Antonella." --post_status=publish --allow-root --path=/var/www/html

wp post create --post_title="Post de Prueba Antonella" --post_content="Este es un post de prueba para demostrar las funcionalidades del framework Antonella." --post_status=publish --allow-root --path=/var/www/html
wp post create --post_type=page --post_title="Página de Prueba Antonella" --post_content="Esta es una página de prueba para el framework Antonella." --post_status=publish --allow-root --path=/var/www/html --quiet 2>/dev/null || true
wp post create --post_title="Post de Prueba Antonella" --post_content="Este es un post de prueba para demostrar las funcionalidades del framework Antonella." --post_status=publish --allow-root --path=/var/www/html --quiet 2>/dev/null || true
echo "✅ Contenido de ejemplo creado"

echo "🎉 ¡Configuración completada!"
echo "📍 Accede a tu sitio en: http://localhost:8080"
Expand Down