Optimización y resolución de errores comunes en Laradock

Configuración de versiones y espejos de descarga

Para ajustar las versiones de los servicios principales, es necesario modificar el archivo .env en la raíz de su instalación de Laradock:

# Definición de versiones de software
PHP_VERSION=7.4
MYSQL_VERSION=5.7
WORKSPACE_TIMEZONE=America/Mexico_City

Si experimenta lentitud en la descarga de imágenes base, puede habilitar el cambio de fuentes de software para utilizar espejos más rápidos (especialmente útil si se encuentra tras firewalls restrictivos):

CHANGE_SOURCE=true
UBUNTU_SOURCE=aliyun

Optimización del contenedor Workspace

Cuando la construcción del antorno de trabajo (workspace) es demasiado lenta, además de cambiar UBUNTU_SOURCE, puede intervenir directamente en el Dockerfile del directorio workspace para redirigir los repositorios PPA:

# Ejemplo de redirección de PPA en el Dockerfile para mejorar la velocidad
RUN find /etc/apt/sources.list.d/ -type f -name "*.list" -exec sed -i.bak -r 's#http(s)?://ppa.launchpad.net#https://launchpad.proxy.ustclug.org#ig' {} \;

Si al construir recibe un error indicando que /tmp/sources.sh: not found, suele deberce a un problema de formato de fin de línea (EOF) de Windows. Corríjalo convirtiéndolo a formato Unix:

# Ejecutar en una terminal compatible con Unix
vi ./workspace/sources.sh
:set ff=unix
:wq

Solución de conflictos en MySQL

1. Conflicto de puertos: Si el puerto 3306 ya está ocupado por una instancia local de MySQL, recibirá un error de bind. Cambie el mapeo en el archivo .env:

# Cambiar el puerto expuesto al host
MYSQL_PORT=3307

2. Errores de InnoDB (Flags mismatch): Este error ocurre frecuentemente al intentar degradar la versión de MySQL (por ejemplo, de 8.0 a 5.7) utilizando el mismo volumen de datos. La solución consiste en limpiar el directorio de datos persistentes (tenga en cuenta que esto borrará sus bases de datos):

# Ruta común en Windows para datos de Laradock
C:\Users\Usuario\.laradock\data\mysql

Gestión de PHP-FPM y persistencia de cambios

Si los cambios realizados en la configuración de PHP no se reflejan, intente reconstruir el contenedor ignorando el caché del sistema de capas de Docker:

docker-compose build --no-cache --pull php-fpm

Recuerde que para cualquier modificación estructural en el archivo docker-compose.yml, es indispensable reiniciar los servicios:

docker-compose stop
docker-compose up -d nginx mysql php-fpm

Personalización de Redis

Para implementar una configuración personalizada de Redis, modifique su Dockerfile para que cargue un archivo externo:

FROM redis:latest
# Crear directorio de configuración y copiar archivo local
RUN mkdir -p /usr/local/etc/redis
COPY redis.conf /usr/local/etc/redis/redis.conf

VOLUME /data
EXPOSE 6379

# Iniciar servidor apuntando al archivo de configuración
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]

Dentro de redis.conf, asegúrese de ajustar los siguientes parámetros para permitir conexiones externas seguras:

  • Comente la línea bind 127.0.0.1
  • Establezca protected-mode no
  • Defina una contraseña con requirepass su_password_seguro

Comandos de diagnóstico útiles

A continuación, se presentan comandos esenciales para verificar el estado de su entorno desde dentro de los contenedores:

# Listar módulos de PHP instalados
php -m

# Localizar la ruta del archivo php.ini activo
php -i | grep php.ini

# Verificar información de una extensión específica (ej. Swoole)
php --ri swoole

# Acceder a la interfaz de línea de comandos de Redis
redis-cli

Etiquetas: Docker laradock MySQL Redis PHP-FPM

Publicado el 7-24 21:28