PHPackages                             adimeo-lab/deckle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. adimeo-lab/deckle

ActiveApplication[DevOps &amp; Deployment](/categories/devops)

adimeo-lab/deckle
=================

Automation tool for containerized projects

v1.2.0.2(6y ago)110[5 issues](https://github.com/adimeo-lab/deckle/issues)GPL-3.0-onlyPHPPHP ^7.3CI failing

Since Dec 11Pushed 6y agoCompare

[ Source](https://github.com/adimeo-lab/deckle)[ Packagist](https://packagist.org/packages/adimeo-lab/deckle)[ RSS](/packages/adimeo-lab-deckle/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (10)Dependencies (9)Versions (26)Used By (0)

Deckle : automatisation du montage d'environnements de développement virtualisés
================================================================================

[](#deckle--automatisation-du-montage-denvironnements-de-développement-virtualisés)

Concept
-------

[](#concept)

Parce que Docker ne fonctionne (correctement) que sous Linux, et que nous sommes nombreux à travailler sous Mac, nous avons choisi de faire tourner nos environnements de référence dans une machine virtuelle Ubuntu.

L'administration d'un tel environnement peut s'avérer complexe, voire déroutant pour un junior. Deckle a vocation à simplifier cette administration en automatisant de nombreuses tâches, aussi bien en rapport avec le déploiement de l'environnement qu'avec son utilisation quotidienne.

Et parce que son environnement est riche, on a fait en sorte que sous Linux aussi, Deckle devienne notre environnement de développement de référence.

Composants
----------

[](#composants)

Pour fonctionner de manière optimale, l'ecosystème Deckle requiert (notamment) les compsoants suivants :

- macOs

    - [Virtual Box](http://www.virtualbox.org)
    - [Homebrew](http://www.homebrew.com)
    - [Mutagen](http://www.mutagen.io)
    - [Vagrant](http://www.vagrantup.com)
- Linux (Ubuntu/Debian)

    - [Virtual Box](http://www.virtualbox.org)
    - [Mutagen](http://www.mutagen.io)
    - [Vagrant](http://www.vagrantup.com)

Paramétrage
-----------

[](#paramétrage)

### Installation des dépendances

[](#installation-des-dépendances)

La majorité des outils en ligne de commande nécessaires au bon fonctionnement de Deckle sont soit natifs sur macOs soit installables avec `brew`. L'installateur de Deckle procédera à l'installation de ces dépendances.

#### Virtual Box

[](#virtual-box)

Téléchargez l'installateur sur le [site officiel](https://www.virtualbox.org/wiki/Downloads).

#### Vagrant

[](#vagrant)

- macOs
- Télécharger l'installateur sur le [site officiel](http://www.vagrantup.com)
- GNU/Linux (Ubuntu/Debian)
- l'installateur de Deckle procédera à l'installation pour vous

#### Mutagen

[](#mutagen)

Pour assurer des performances maximales, nous n'utilisons pas de montage de volume entre l'hôte et le container, mais un outil de synchronisation ultra performant qui installe un daemon dans le container et assure en permanence une synchronisation bi-directionelle entre l'hôte et le container, avec une precedence donnée à l'hôte.

Cet outil s'appelle `mutagen` et s'installe sous macOs à l'aide de `brew`.

NOTE : Si vous tentez d'utilisez Deckle sur une autre plateforme que macOs (Linux notamment), il faut télécharger le package sur [la page GitHub](https://github.com/mutagen-io/mutagen/releases) du projet.

### Installation de Deckle

[](#installation-de-deckle)

Dans un premier temps, rendez-vous sur [deckle.adimeo.eu](https://deckle.adimeo.eu) pour télécharger la dernière version de Deckle.

Ensuite, pour installer l'environnement nécessaire au fonctionnement de Deckle, exécutez :

```
deckle install
```

Dans le cas où tout s'est bien passé, vous devriez pouvoir accéder à [la machine virtuelle Deckle](http://portainer.deckle.local) et voir les containers en fonctionnement sur Portainer (identifiants par défaut : admin/portainer).

### Fine tuning

[](#fine-tuning)

#### Authentification SSH

[](#authentification-ssh)

Le plus confortable pour se connecter en SSH sera le recours à une clé SSH, et une configuration de votre client.

Le préalable est donc de disposer d'une paire de clés RSA associée à son compte utilisateur. Idéalement, cette même clé devrait être associée à votre compte GitHub.

La première étape consiste donc à copier votre clé publique sur la VM :

```
deckle vm:ssh:copy-id
```

Ensuite, il faut indiquer à SSH que l'on souhaite propager sa clé privée dans les sessions distantes (ce qui permet de ne PAS la copier physiquement dans la VM) en éditant votre fichier de config SSH :

```
vi ~/.ssh/config
```

Et en y ajoutant la section suivante :

```
Host deckle-vm
        Hostname deckle-vm
        User deckle
        AddKeysToAgent yes
        ServerAliveInterval 60
        ForwardAgent Yes
        IdentitiesOnly yes
        UseKeychain yes # macOs uniquement

```

Travailler avec Deckle
----------------------

[](#travailler-avec-deckle)

### Nouveau projet

[](#nouveau-projet)

Pour déployer un nouveau projet dans la machine virtuelle Deckle, il vous suffit de vous placer dans le dossier racine de votre projet et d'exécuter :

```
deckle bootstrap
```

Où :

- est l'identifiant de votre projet. Attention, celui-ci doit être unique et ne comporter aucun caractère spécial (lettres seulement)
- &lt;provider/template&gt; est le nom du template de configuration Deckle à utiliser. La liste des templates peut être obtenue en exécutant :

```
deckle templates:list
```

ou en consultant le [dépôt officiel](https://github.com/adimeo-lab/deckle-templates).

Une fois le projet bootstrapé, il sera éventuellement nécessaire d'adapter le template au projet en cours en parcourant les fichiers du dossier `./deckle` nouvellement créé. Chaque template fourni un README expliquant ses grands principes de fonctionnement et ce qu'il convient d'ajuster ou non.

### Initialisation de l'environnement

[](#initialisation-de-lenvironnement)

Pour déployer un projet préalablement bootstrapé (i.e. disposant d'une configuration opérationnelle dans un dossir `./deckle`), il suffit d'exécuter :

```
cd project/diretory
deckle up
```

Si la configuration Deckle du projet a été mise à jour, il peut être nécessaire de redéployer certains fichiers locaux en réexécutant :

```
cd project/diretory
deckl init
```

### Synchronisation des fichiers sources dans l'image

[](#synchronisation-des-fichiers-sources-dans-limage)

Chaque projet doit fournir un fichier `deckle/mutagen.yml` pour fonctionner correctement avec Deckle. Pour démarrer la synchronisation, exécuter :

```
cd project/directory
deckle mutagen:sync start
```

NOTE : la commande `deckle mutagen:sync ` peut être abrégée en `deckle sync `

Pour contrôler le bon fonctionnement de la synchronisation en continu :

```
deckle mutagen:monitor
```

Ou pour surveiller une première synchronisation :

```
deckle mutagen:monitor -u
```

Auquel cas le moniteur s'interrompera automatiquement lorsque toutes les sessions seront synchronisées.

### Installation des dépendances

[](#installation-des-dépendances-1)

Pour installer les dépendances d'un projet à l'aide de `composer`, exécutez :

```
deckle composer install
```

NOTE: si vous voulez passer des paramètres à `composer`, il faut les faire précéder de la séquence `--` afin que Deckle ne les considère pas comme lui étant destinés. Exemple :

```
deckle composer install -- --no-interaction
```

### Ouvrir un shell dans un container

[](#ouvrir-un-shell-dans-un-container)

Pour accéder rapidement aux images de l'environnement en shell, exécutez :

```
deckle sh
```

Ceci ouvrira une session shell automatiquement dans le container identifié dans la section `app.container` de la configuration. Si vous souhaitez accéder à un autre container de la machine virtuelle, utilisez :

```
deckle sh
# par exemple
deckle sh mysql57
```

### Ouvrir un shell dans la Deckle Machine

[](#ouvrir-un-shell-dans-la-deckle-machine)

Pour accéder en ssh à la machine Deckle, utilisez simplement :

```
deckle vm:ssh
```

Cette commande ouvrira un shell ssh en tant que l'utilisateur `deckle`. Pour passer en root, exécutez `sudo -s` une fois dans le shell distant. Au besoin, le mot de passe par défaut de l'utilisateur `deckle` est ... `deckle`.

### Aide et autres commandes

[](#aide-et-autres-commandes)

Pour obtenir plus d'informations sur ces commandes et/ou découvrir les autres commandes disponibles, consultez l'aide embarquée :

```
# afficher toutes les commandes disponibles
deckle list

# afficher le détail de l'utilisation d'une commande
deckle help
# exemple
deckle help vm:ssh
```

Autres services
===============

[](#autres-services)

La Deckle Machine intègre un certain nombre de services, dont la plupart offrent une interface web d'accès et/ou de monitoring. Les principales sont listées dans ce chapitre. Pour voir la liste de toutes les applis installées, exécutez :

```
deckle apps list
```

Et pour savoir si elles exposent une interface web (ainsi que leur état), utilisez :

```
deckle apps status
```

Si une app expose un port 80, la convention veut que cette interface web soit accessible par l'url `http://.deckle.local`.

Portainer
---------

[](#portainer)

admin/portainer

Traefik
-------

[](#traefik)

Traefik est le reverse proxy qui permet d'accèder aux différents container via les adresses en `*.deckle.local`. Vous pouvez accéder à son UI à l'adresse ci-dessous pour consulter la liste des routers HTTP ou TCP qui sont configurés dans l'environnement Deckle :

MySQL 5.7
---------

[](#mysql-57)

Une instance de phpMyAdmin configurée pour accéder au serveur MySQL 5.7 est disponible à l'adresse suivante :

Toutefois, il est également possible (et préférable) de configurer un client plus classique (comme MySQL Workbench) en utilisant les informations de connexion suivantes :

- hôte : `mysql57.deckle.local` (attention, depuis les autres containers, il faut utiliser `mysql57` uniquement)
- user : root
- pass : root

Maildev
-------

[](#maildev)

Maildev est un serveur de mail local permettant d'intercepter tout mail sortant d'une application et de les consulter dans un webmail accessible sur :

Pour que vos applications utilisent ce service en développement, il suffit de les configurer pour utiliser l'hôte `maildev` en guise de serveur SMTP.

XHGui
-----

[](#xhgui)

Cette application permet de consulter des traces de profiling générées par XHProf. Pour les projets utilisant un template Deckle officiel (provider "adimeo"), il suffit d'ajouter `?xhprofile` ou `&xhprofile` dans n'importe quelle URL du projet. Ce paramètre peut également être passé en POST.

Sa présence déclenchera la collecte d'informations de profiling que vous retrouverez sur :

Etendre Deckle
==============

[](#etendre-deckle)

Commandes locales
-----------------

[](#commandes-locales)

Si vous souhaitez écrire une commande spécifique à un projet, vous pouvez créer une classe dans `./deckle/commands`.

Le fichier contenant la classe doit s'appeler `*Command.php` et étendre `AdimeoLab\Deckle\AbstractDeckleCommand`.

| Attention : pour développer votre commande, il vous faudra installer les sources de Deckle dans votre dossier `./deckle`, | mais ces sources ne seront pas celles utilisées à l'exécution. A la place, ce sont celles embarquées dans le binaire | `deckle(.phar)` qui le seront. Il n'y a pour l'heure aucun mécanisme de contrôle de versions pour les commandes locales.

Support
=======

[](#support)

Problèmes connus
----------------

[](#problèmes-connus)

### Certaines commandes impliquant une connexion SSH depuis la VM échouent avec le message 'Host key verification failed.

[](#certaines-commandes-impliquant-une-connexion-ssh-depuis-la-vm-échouent-avec-le-message-host-key-verification-failed)

'

Le message `Host key verification failed.` signifie en général que la machine distante n'est pas connue de la VM (i.e. que son identité est absente du fichier `~/.ssh/known_hosts`).

Pour remédier à ce problème, il faut faire une première connexion depuis la VM elle-même sur la machine concernée.

### La résolution des hôtes \*.deckle.local ne fonctionne pas sur macOs

[](#la-résolution-des-hôtes-decklelocal-ne-fonctionne-pas-sur-macos)

Si ce problème survient, tentez de redémarrer le sous-système DNS de macOs comme suit :

```
dscacheutil -flushcache
sudo killall -HUP mDNSResponder
```

En cas de problème avec la mise en oeuvre de DNSmasq, consulter [ce blog](https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/#configure-as-default-dns-resolver-in-macos)

### Toutes les URL en `http://*.deckle.local` affichent un simple message `404 not found`

[](#toutes-les-url-en-httpdecklelocal-affichent-un-simple-message-404-not-found)

Ceci est du à un problème de configuration de Traefik. Pour consulter l'état de Traefik, tentez d'accéder à son UI par l'adresse suivante :

```
http://traefik.deckle.local:8080

```

Autres problèmes
----------------

[](#autres-problèmes)

Si vous rencontrez des problèmes durant l'installation ou durant l'utilisation de Deckle, merci de contacter [Gauthier](gdelamarre@gmail.com) ou de créer une issue sur le [dépôt GiHub](https://github.com/adimeo-lab/deckle/issues).

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 74.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

24

Last Release

2306d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/35ff61d55f3f648d8c1046aac3892fba4781067c98c5cf7e364767f8ca033166?d=identicon)[gauthier](/maintainers/gauthier)

![](https://www.gravatar.com/avatar/6ed32dc08c012c25925ba618f54d5a6e52af3ff0d0cc6e42a7fed2b59dfca28e?d=identicon)[bcerati](/maintainers/bcerati)

---

Top Contributors

[![gauthier](https://avatars.githubusercontent.com/u/32955?v=4)](https://github.com/gauthier "gauthier (35 commits)")[![bcerati](https://avatars.githubusercontent.com/u/2326968?v=4)](https://github.com/bcerati "bcerati (12 commits)")

###  Code Quality

TestsCodeception

### Embed Badge

![Health badge](/badges/adimeo-lab-deckle/health.svg)

```
[![Health](https://phpackages.com/badges/adimeo-lab-deckle/health.svg)](https://phpackages.com/packages/adimeo-lab-deckle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19462.3M1.3k](/packages/drupal-core)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
