Docs

Un site et sa base de données

Un site ou une API en Node.js, une base PostgreSQL dans le même projet, des migrations au démarrage et ton domaine en HTTPS.

Ce guide met en ligne une application web et sa base, reliées par le réseau privé du projet. L’exemple est en Node.js ; la démarche est la même pour PHP, Python ou Go.

1. Le manifeste

Depuis le dossier de ton site, crée l’application, puis déclare la base :

Terminal
ark init --app boutique --project Boutique
arkya.json
{
  "app": "boutique",
  "dockerfile": "Dockerfile",
  "context": ".",
  "project": "Boutique",
  "start": "./start.sh",
  "services": {
    "db": { "type": "postgres", "size": { "cpu": 1, "ram": 1, "disk": 10 } }
  },
  "env": {}
}
Terminal
ark plan --apply

La base s’appelle boutique-db. Note son mot de passe : ark l’affiche une seule fois.

2. Les migrations au démarrage

start remplace la commande de l’image par un script qui migre, puis lance le serveur :

start.sh
#!/bin/sh
set -e
npx prisma migrate deploy
exec node server.js

Rends-le exécutable avant de construire : chmod +x start.sh. Le exec final passe le signal d’arrêt au serveur.

3. La connexion à la base

Dans l’espace client, onglet Variables de boutique :

.env
DATABASE_URL=postgres://arkya:MOT_DE_PASSE@${boutique-db.URL}/boutique_db

Marque la variable comme secrète. ${boutique-db.URL} devient l’adresse interne de la base, hôte:port, à chaque démarrage.

4. Déployer

Terminal
ark deploy

Ton site répond sur son adresse arkya.app, en HTTPS.

5. Ton domaine

Dans l’onglet Domaines de boutique, ajoute www.maboutique.fr, puis pose chez ton registrar le CNAME affiché. Le certificat suit tout seul. Voir Adresse et domaines.

6. Les sauvegardes

Active les sauvegardes automatiques de boutique-db, dans son onglet Sauvegardes. Elles sont coupées par défaut. Voir Sauvegardes d’une base.

Les fichiers envoyés par tes visiteurs

Ton application n’a pas de disque : une image envoyée par un visiteur disparaît au prochain déploiement. Range ces fichiers dans un stockage objet externe, compatible S3, et garde leur adresse en base.