Docs

Le manifeste arkya.json

arkya.json décrit ton application, sa taille et les services dont elle a besoin. ark plan compare au réel, ark deploy applique puis déploie.

arkya.json vit à la racine de ton dépôt. ark init l’écrit, tu le complètes, et il décrit l’état voulu :

arkya.json
{
  "app": "boutique",
  "dockerfile": "Dockerfile",
  "context": ".",
  "project": "Production",
  "size": { "cpu": 1, "ram": 2 },
  "start": "./scripts/start.sh",
  "services": {
    "db": {
      "type": "postgres",
      "size": { "cpu": 1, "ram": 1, "disk": 10 }
    },
    "worker": {
      "type": "app",
      "dockerfile": "Dockerfile.worker",
      "env": { "ROLE": "worker" }
    }
  },
  "env": {
    "LOG_LEVEL": "info"
  }
}

L’application

ChampRôlePar défaut
apple nom de l’application, et de son dépôt d’images : minuscules, chiffres et tirets, 3 à 40 caractèresobligatoire
dockerfilele fichier à construireDockerfile
contextle dossier de construction.
projectle projet où ranger l’application et ses services ; créé s’il n’existe paston projet par défaut
nodele nœud, par son libellé ; ark init l’écrit pour toile seul nœud ouvert
sizecpu et ram, en vCPU et en Go, nombres entiers1 vCPU, 1 Go
startla commande lancée à la place de celle de l’imagecelle de l’image
servicesles autres services à tenir prêtsaucun
envles variables de l’applicationaucune

Une application n’a pas de disque : un disk dans sa taille est ignoré, et ark te le signale.

Les services

Chaque entrée de services porte un alias, db ou worker ci-dessus. Le service s’appelle <app>-<alias> chez Arkya, ici boutique-db et boutique-worker, sauf si tu lui donnes un name.

typeCe que c’estTaille
postgresPostgreSQL 16cpu, ram, disk
mysql ou mariadbMariaDB 11, compatible MySQLcpu, ram, disk
redisRedis 7cpu, ram, disk
appune seconde image du même dépôt : un worker, un consommateur de filecpu, ram

Sans taille, ark commande une base au plus petit format permis, au moins 1 vCPU, 1 Go de mémoire et 5 Go de disque.

Une seconde image accepte aussi dockerfile, context, start et env. ark deploy la construit et la met en service avec le même nom de version que l’application.

Les variables

env contient des valeurs simples, sans secret : le fichier part dans Git. ark deploy les envoie à chaque déploiement.

Le CLI 0.2.0 ne sait pas encore écrire la connexion à une base dans env : une référence comme ${db.url} fait échouer la mise en service. Pose ces variables dans l’espace client, avec les références décrites dans Variables et références.

Voir avant d’appliquer

Terminal
ark plan

ark plan compare le manifeste à ce qui existe et classe chaque service : à créer, à modifier, commande de démarrage à changer, déjà en place. Chaque ligne porte son prix mensuel, et le total dit ce que tu paieras une fois le manifeste tenu.

Terminal
ark plan --apply

--apply crée et retaille ce qui manque, sans déployer. ark deploy fait la même chose, puis construit, envoie et met en service. Les deux te demandent confirmation, et le démarrage immédiat quand ils créent un service.

Ce que le manifeste ne fait pas

  • Il ne supprime rien. Retirer un service du fichier ne le détruit pas. La suppression passe par ark rm.
  • Il ne déplace rien. Le nœud est fixé à la création.
  • Il ne réduit pas un disque. Le disque d’une base peut grandir, jamais rétrécir.