Générateur visuel de fichiers Docker Compose
  • PHP 66.4%
  • JavaScript 32.9%
  • Dockerfile 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-24 16:02:37 +02:00
api Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
assets Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
src Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
storage Initial implementation of ComposePilot 2026-09-24 15:48:02 +02:00
tests Initial implementation of ComposePilot 2026-09-24 15:48:02 +02:00
.dockerignore Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
.env.example Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
.gitignore Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
compose.yaml Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
composer.json Initial implementation of ComposePilot 2026-09-24 15:48:02 +02:00
composer.lock Initial implementation of ComposePilot 2026-09-24 15:48:02 +02:00
Dockerfile Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
index.php Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00
README.md Add SSH and Portainer stack deployment 2026-09-24 16:02:37 +02:00

ComposePilot

ComposePilot est un générateur visuel léger de fichiers Docker Compose. Il utilise PHP 8.2, Symfony YAML, du JavaScript vanilla et du CSS maison. Il ne se connecte pas au daemon Docker.

Développement

Prérequis : PHP 8.2+ et Composer.

composer install
php -S 127.0.0.1:8080

Ouvrez ensuite http://127.0.0.1:8080.

Docker

docker compose up -d --build

L’application est accessible sur http://localhost:8080. Aucun socket Docker n’est monté.

Tests

composer test

Les tests couvrent les réseaux Proxy, Database et Host, les labels Watchtower/KiwiNetwork, les chaînes d’environnement, la déduplication des réseaux globaux, le cas de référence ainsi que la conservation des propriétés importées inconnues.

Structure

  • index.php : page unique de l’application ;
  • assets/ : interface vanilla JS/CSS ;
  • api/generate.php et api/import.php : endpoints JSON ;
  • src/ComposeBuilder.php : construction du tableau Compose ;
  • src/ComposeValidator.php : validation métier ;
  • src/ComposeParser.php : import vers le modèle ComposePilot ;
  • tests/run.php : tests autonomes, sans framework additionnel.

Le navigateur conserve automatiquement le projet et le thème dans localStorage. Les propriétés inconnues d’un service importé sont stockées dans extraProperties puis réexportées.

Les projets enregistrés depuis « Mes projets » sont conservés côté serveur dans storage/projects. En Docker, ce dossier utilise le volume persistant composepilot_data.

Déploiement SSH et Portainer

Copiez .env.example vers .env, renseignez les accès puis montez la clé SSH avec COMPOSEPILOT_SSH_KEY_HOST_PATH. Le bouton Déployer :

  1. valide à nouveau le projet côté serveur ;
  2. crée le dossier de la stack et les sources de volumes sous COMPOSEPILOT_DEPLOY_ROOT via SSH ;
  3. sauvegarde l’ancien fichier sous compose.YYYYMMDD-HHMMSS.yaml puis écrit compose.yaml ;
  4. crée la stack Docker Standalone dans Portainer, ou la met à jour si elle existe déjà.

Les secrets restent dans .env, exclu de Git. Utilisez un utilisateur SSH et une clé API Portainer limités au strict nécessaire. Activez COMPOSEPILOT_PORTAINER_VERIFY_TLS=true dès que Portainer utilise un certificat reconnu.