Skip to content

Fix Docker environment: PHP 8.1, netcat, and env variables#223

Open
calebrio02 wants to merge 2 commits intoCRLibre:v4.4from
calebrio02:fix/docker-setup
Open

Fix Docker environment: PHP 8.1, netcat, and env variables#223
calebrio02 wants to merge 2 commits intoCRLibre:v4.4from
calebrio02:fix/docker-setup

Conversation

@calebrio02
Copy link

Arreglo de Entorno Docker y Configuración (Fix Docker Environment)

Descripción

Este PR corrige varios problemas que impedían construir y ejecutar el contenedor Docker en entornos modernos y corregir errores de configuración en el despliegue.

Cambios Realizados y Justificación

1. Actualización de Dockerfile (Infraestructura)

  • Base Image: Se actualizó de php:7.4-apache a php:8.1-apache.
    • Razón: La imagen anterior estaba basada en Debian Buster, que ha llegado al final de su vida útil (EOL). Sus repositorios han sido archivados, lo que provocaba errores 404 Not Found al intentar hacer apt-get update. PHP 8.1 es una versión con soporte activo y retrocompatible para este proyecto.
  • Paquete Netcat: Se reemplazó netcat por netcat-openbsd.
    • Razón: En las versiones más recientes de Debian (Bookworm/Trixie), el paquete netcat es virtual y no se puede instalar directamente. Se debe especificar netcat-openbsd o netcat-traditional.
  • Saltos de Línea (CRLF): Se añadió dos2unix y se ejecutó sobre docker-entrypoint.sh.
    • Razón: Garantiza que el script de entrada tenga formato UNIX (LF) aunque el repositorio se clone en Windows (donde git suele convertir a CRLF). Esto evita el error exec user process caused: no such file or directory.

2. Actualización de docker-compose.yml (Configuración)

  • Inyección de Variables: Se agregaron explícitamente las variables de entorno (DB_HOST, core_install, cryptoKey, etc.) en la sección environment del servicio php-apache.
    • Razón: Docker Compose no pasa automáticamente las variables del archivo .env al contenedor a menos que se declaren. Sin esto, la aplicación PHP fallaba al conectar a la base de datos o encontrar la carpeta api porque las variables llegaban vacías.
  • Variables de Inicialización de MariaDB: Se corrigieron las variables del servicio mariadb para usar los nombres estándar de la imagen oficial (MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE) en lugar de nombres personalizados.
    • Razón: La imagen mariadb solo crea el usuario y la base de datos inicial si recibe estas variables específicas. Antes, la base de datos se inicializaba vacía (sin usuario/password correctos), causando errores de "Access denied".
  • Valores por Defecto: Se añadió soporte para valores por defecto (${VAR:-default}) en docker-compose.yml.
    • Razón: Permite que el proyecto funcione "out of the box" para pruebas rápidas sin obligar al usuario a configurar un .env completo desde el inicio.

Verificación

  • Construcción: docker-compose build se ejecuta exitosamente sin errores de repositorio.
  • Ejecución: docker-compose up -d levanta los servicios correctamente.
  • Prueba de API: http://localhost:8080/api.php?w=ejemplo&r=hola devuelve la respuesta esperada hola :).

@calebrio02 calebrio02 closed this Feb 13, 2026
@calebrio02 calebrio02 reopened this Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant