Stack Harbor PaaS exécute applications et bases de données comme des conteneurs distincts dans le même environnement. Pour ouvrir une connexion, l’application doit référencer la base par nom d’hôte — localhost ne fonctionne pas, parce que l’application n’est pas sur le même conteneur que la base.
Cette page couvre les patrons de chaînes de connexion pour les trois options disponibles — CNAME du nœud, IP privée, IP publique — et le code spécifique au moteur pour JDBC Java et PHP.
Trois options d’hôte
Depuis tout conteneur applicatif à l’intérieur de l’environnement, la base est joignable via :
- CNAME du nœud base de données —
node{node_id}-{environment_name}.{domain}(la forme canonique). - IP privée — utile pour les topologies fixes ; l’IP reste stable pour la durée de vie de l’environnement.
- IP publique — uniquement disponible quand un point de terminaison public est attaché au nœud base de données.
Pour une topologie MySQL/MariaDB/Percona en grappe, les applications se connectent à un point de terminaison ProxySQL (proxy.{environment_name}.{domain}) plutôt qu’à un nœud précis. ProxySQL gère le routage, donc un basculement de nœud n’exige pas de redémarrer l’application.
Connexion Java (JDBC)
| Moteur | URL JDBC |
|---|---|
| MySQL / MariaDB | jdbc:mysql://node{node_id}-{environment_name}.{domain}/{dbname} |
| MySQL auto-cluster | jdbc:mysql://proxy.{environment_name}.{domain}:3306/{dbname} |
| MariaDB auto-cluster | jdbc:mariadb://proxy.{environment_name}.{domain}:3306/{dbname}?usePipelineAuth=false |
| PostgreSQL | jdbc:postgresql://node{node_id}-{environment_name}.{domain}/{dbname} |
Ouvrez la connexion avec DriverManager.getConnection(URL, user, password) sur une de ces URL. Les URL en grappe passent par les répartiteurs ProxySQL — la grappe peut basculer sans redémarrage applicatif.
Pour l’encodage UTF-8, ajoutez les paramètres d’encodage standards :
jdbc:{dbtype}://{host}/{dbname}?useUnicode=yes&characterEncoding=UTF-8
Connexion PHP
Pour MySQL et MariaDB, les patrons MySQLi ou PDO standards s’appliquent :
$conn = mysqli_connect('node{node_id}-{environment_name}.{domain}', 'user', 'password', 'dbname');
Pour PostgreSQL, utiliser la chaîne de connexion libpq :
$conn = pg_connect("host=node{node_id}-{environment_name}.{domain} port=5432 dbname=postgres user=webadmin password=password");
La chaîne d’hôte ne doit pas inclure http:// — la base n’est pas un point HTTP. Les identifiants sont envoyés par courriel par la plateforme à la création du conteneur.
Python et Node.js
Python (psycopg, mysqlclient, pymongo) et Node.js (mysql2, pg, mongodb) suivent le même patron d’hôte. Passez le CNAME (ou l’IP privée) du nœud base de données comme hôte. Pour une topologie MySQL en grappe, pointez sur le point de terminaison ProxySQL.
Ce qui ne fonctionne pas
localhost— application et base sont sur des conteneurs distincts, donc la loopback n’est pas la base.- Un nom de service nu sans suffixe d’environnement — le CNAME inclut le nom d’environnement, pas seulement l’id du nœud.
- Une IP publique sans point de terminaison public attaché — le conteneur base de données n’en a pas par défaut.
Voir aussi
- Hébergement base de données — provisionnement et pratiques opérationnelles.
- Fichiers de configuration base de données — où vivent les identifiants et les configs moteur.
- MySQL/MariaDB/Percona haute disponibilité — topologies en grappe derrière ProxySQL.
- Connexion MySQL — détails de connexion par moteur.
- Connexion PostgreSQL — détails de connexion par moteur.