Bonjour tout le monde,

Je rencontre un problème de cron sur mon image docker avec php (frankenphp).

Quand je lance mes commandes symfony manuellement tout se passe bien, mais quand c'est au cron de le faire (dans ce même container), php n'arrive pas à se connecter à la base de données.

Voici mes logs de mon cron.log :

In ExceptionConverter.php line 101:

  An exception occurred in the driver: SQLSTATE[HY000] [1045] Access denied f  
  or user 'root'@'172.18.0.29' (using password: YES)                           

In Exception.php line 28:

  SQLSTATE[HY000] [1045] Access denied for user 'root'@'172.18.0.29' (using p  
  assword: YES)                                                                

In Driver.php line 33:

  SQLSTATE[HY000] [1045] Access denied for user 'root'@'172.18.0.29' (using p  
  assword: YES)                                                                

cron:server:check

Ma tâche cron en question :

*/5 * * * * cd /app && php bin/console cron:server:check >> /var/log/cron.log 2>&1

Ce que je veux

Faire fonctionner mon code avec la connexion avec la BDD depuis le cron.

Ce que j'obtiens

Le cron rencontre un problème de connexion à la BDD.
Quelqu'un aurai une idée comment résoudre ce problème ?

2 réponses


SimonDevelop
Auteur
Réponse acceptée

Ok, je viens de trouver la solution, pour ceux qui serai curieux, il faut ajouter cette ligne avant le démarrage du cron dans l'entrypoint :
env >> /etc/environment

Après divers tests je viens de comprendre que le cron ne récupère pas l'IP du contenaire mysql.
J'ai beau ajouter l'IP directement et rien ne change, il me met l'IP du contenaire lui même.

Mon env de mon appli symfony:

DATABASE_URL=mysql://root:password@172.18.1.42:3306/gsm

Ce que me retourne le cron :

In Driver.php line 33:

  SQLSTATE[HY000] [1045] Access denied for user 'root'@'172.18.0.30' (using p  
  assword: YES)

J'ai l'impression que mon cron a du mal avec les variables environment mais de là a changer carrément une ip dans une url...