fix: disable MariaDB SSL for internal Docker networking + worker MySQL readiness wait
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 "$@"
|
||||
|
||||
Reference in New Issue
Block a user