fix: disable MariaDB SSL for internal Docker networking + worker MySQL readiness wait

This commit is contained in:
Lizandro Guarnizo
2026-03-11 20:22:19 -05:00
parent 06e4ad6fd5
commit 1b9942442a
3 changed files with 24 additions and 2 deletions
+5 -1
View File
@@ -10,13 +10,17 @@ class Database {
private function __construct() {
try {
// Añadir ssl-mode=DISABLED al DSN para entornos Docker internos donde
// la comunicación es ya privada (contenedor → contenedor en la misma red).
$dsn = "mysql:host=" . DB_HOST . ";port=" . DB_PORT . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_PERSISTENT => true,
(class_exists('Pdo\Mysql') ? \Pdo\Mysql::ATTR_INIT_COMMAND : PDO::MYSQL_ATTR_INIT_COMMAND) => "SET NAMES " . DB_CHARSET . " COLLATE utf8mb4_unicode_ci"
(class_exists('Pdo\Mysql') ? \Pdo\Mysql::ATTR_INIT_COMMAND : PDO::MYSQL_ATTR_INIT_COMMAND) => "SET NAMES " . DB_CHARSET . " COLLATE utf8mb4_unicode_ci",
// Deshabilitar verificación SSL — conexión interna Docker (sin certificados)
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
];
$this->pdo = new PDO($dsn, DB_USER, DB_PASS, $options);
+1 -1
View File
@@ -16,7 +16,7 @@ services:
volumes:
- mysql-data:/var/lib/mysql
- ./database:/docker-entrypoint-initdb.d:ro
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time-zone=America/Bogota
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time-zone=America/Bogota --skip-ssl
networks:
- whatsapp-network
healthcheck:
+18
View File
@@ -11,4 +11,22 @@ if [ ! -f /var/www/html/vendor/autoload.php ]; then
cd /var/www/html && composer install --no-dev --optimize-autoloader --no-interaction 2>&1
fi
# Esperar a que MySQL esté disponible antes de arrancar el worker
DB_HOST="${DB_HOST:-mysql}"
DB_PORT="${DB_PORT:-3306}"
RETRIES=30
echo "Esperando MySQL en ${DB_HOST}:${DB_PORT}..."
while [ $RETRIES -gt 0 ]; do
if nc -z "$DB_HOST" "$DB_PORT" 2>/dev/null; then
echo "MySQL disponible."
break
fi
RETRIES=$((RETRIES - 1))
echo "MySQL no disponible, esperando... ($RETRIES intentos restantes)"
sleep 2
done
if [ $RETRIES -eq 0 ]; then
echo "ADVERTENCIA: MySQL no respondió después de 60s, arrancando worker de todas formas..."
fi
exec su-exec www "$@"