Introduction
Clever Cloud supporte nativement PHP, Node.js, Python et bien d’autres runtimes. Mais il est souvent plus pratique de ressembler toutes la configuration dans une image Docker pour simplifier le déploiement.
Nous allons prendre en exemples 2 cas concrêts que nous utilisons chez SmartBooster : Maildev pour capturer les emails de test et Fider pour la gestion des feedbacks clients. Dans les deux cas, le workflow est identique.
1. La stratégie “utiliser plutôt que construire”
Pour les outils transverses (capture d’emails, gestion de feedbacks, monitoring…), développer une solution maison est rarement justifié. Des images Docker open-source couvrent ces besoins avec fiabilité.
La capture d’emails est un excellent exemple : en développement et en recette, vous ne voulez surtout pas que vos emails de test arrivent chez de vrais utilisateurs. Maildev intercepte tous les envois SMTP et les rend visibles dans une interface web, sans jamais les transmettre aux destinataires réels.
C’est une bonne pratique de qualité logicielle à mettre en place dès le début de tout projet.
L’approche consiste à créer un dépôt Git contenant uniquement un Dockerfile qui référence l’image publique,
puis à déployer ce dépôt sur Clever Cloud comme n’importe quelle application.
2. Créer l’application Docker sur Clever Cloud
Depuis la console Clever Cloud, créez une nouvelle application en choisissant le runtime Docker.

Quelques réglages à faire immédiatement après la création :
- Scaling : une instance Nano suffit pour les outils légers comme Maildev. Pour un outil avec base de données comme Fider, passez en XS.
- Force HTTPS : activez cette option dans l’onglet Information pour forcer le HTTPS sur toutes les requêtes.

- Domain name : supprimez le domaine généré par défaut et ajoutez un sous-domaine personnalisé
(ex:
maildev.votreprojet.cleverapps.io).
Ajouter les add-ons nécessaires
Si l’outil requiert une base de données ou du stockage fichier, Clever Cloud propose des add-ons à lier directement à l’application :
- PostgreSQL pour les outils avec persistance relationnelle (Fider utilise un plan XXS_SML minimum)
- Cellar (compatible S3) pour le stockage de fichiers (images, pièces jointes)

3. Gérer l’exposition réseau
Le port 8080
Clever Cloud attend que votre application écoute sur le port 8080. Pour les images Docker qui exposent un autre
port par défaut, vous devrez soit remapper dans le Dockerfile, soit configurer via variable d’environnement.
Pour Fider, c’est simple : PORT=8080 dans les variables d’environnement suffit.
Les redirections TCP
Certains outils nécessitent un accès via un protocole autre que HTTP, comme le SMTP pour Maildev. Clever Cloud
propose des redirections TCP : la plateforme attribue un port aléatoire (ex: 20425) qui redirige vers
le port interne de votre conteneur.

Après avoir créé la redirection, copiez le port attribué et ajoutez la variable d’environnement
CC_DOCKER_EXPOSED_TCP_PORT avec cette valeur dans la configuration de l’application.
4. Configurer via les variables d’environnement
Les variables d’environnement sont le seul mécanisme de configuration à utiliser. Elles permettent d’adapter
le comportement de l’image sans modifier le Dockerfile, et de gérer proprement les secrets.
Clever Cloud injecte automatiquement les variables des add-ons liés (ex: POSTGRESQL_ADDON_DIRECT_URI,
CELLAR_ADDON_KEY_ID). Référencez-les directement dans vos variables applicatives.
Pour Fider, le bloc de variables minimal ressemble à ceci :
BASE_URL="https://fider.votreprojet.fr"
DATABASE_URL="%POSTGRESQL_ADDON_DIRECT_URI%"
PORT="8080"
JWT_SECRET="votre_secret_64_caractères"
EMAIL_NOREPLY="no-reply@votreprojet.fr"
Et pour Maildev votre liste de variable d’environnement est minime avec juste le port HTTP et la redirection TCP :

5. Le Dockerfile et l’automatisation CI/CD
Le Dockerfile est volontairement minimal : il référence l’image publique et expose les ports nécessaires.
Voici le fichier complet pour Maildev, avec le relay vers Tipimail pour les envois réels depuis la recette :
FROM maildev/maildev:1.1.1
LABEL maintainer="dev@email.fr"
EXPOSE 8080 {PORT_TCP}
CMD ["--web-user", "{USER}", "--web-pass", "{PASSWORD}",
"--web", "8080",
"--smtp", "{PORT_TCP}",
"--hide-extensions", "STARTTLS",
"--outgoing-host", "{SMTP_HOST}",
"--outgoing-port", "{SMTP_PORT}",
"--outgoing-user", "{SMTP_USER}",
"--outgoing-pass", "{SMTP_PASS}"]
Détail des paramètres :
--web-user/--web-pass: identifiants HTTP Basic pour protéger l’interface web de visualisation des emails--web 8080: port d’écoute de l’interface web (obligatoire sur Clever Cloud)--smtp {PORT_TCP}: port d’écoute SMTP, à remplacer par la valeur de votre redirection TCP Clever Cloud--hide-extensions STARTTLS: désactive STARTTLS pour éviter les erreurs de handshake TLS sur les connexions internes--outgoing-host/--outgoing-port/--outgoing-user/--outgoing-pass: configuration du relay SMTP sortant vers votre service d’envoi d’email (Mailgun, Brevo, Tipimail…) pour les emails que vous choisissez explicitement de laisser partir en recette
Pour automatiser les déploiements depuis GitLab, ajoutez un job utilisant l’image clevercloud/clever-tools :
deploy:
stage: deploy
image:
name: clevercloud/clever-tools:latest
entrypoint: ["/bin/sh", "-c"]
when: manual
script:
- clever deploy -f -a nom-de-votre-app
L’option when: manual est recommandée pour les environnements de production : le déploiement se déclenche
sur action volontaire depuis l’interface GitLab, pas à chaque push.
6. Maintenir l’application
Les logs sont accessibles directement depuis la console Clever Cloud ou via la CLI avec clever logs.
Ils sont indispensables pour diagnostiquer les erreurs au démarrage du conteneur, notamment les problèmes
de connexion aux add-ons ou de configuration manquante.
Pour les tâches d’initialisation complexes (migrations de base de données, création de bucket…),
Clever Cloud propose la variable CC_POST_BUILD_HOOK qui exécute un script shell après le build
et avant le démarrage du conteneur.
Conclusion
Un dépôt Git avec un Dockerfile de 5 lignes, quelques variables d’environnement et un add-on PostgreSQL :
c’est tout ce qu’il faut pour héberger un outil complet sur Clever Cloud. Cette approche s’applique à des
dizaines d’outils open-source et évite de réinventer des solutions pour des besoins transverses bien couverts
par l’écosystème Docker.
Si vous utilisez déjà Clever Cloud pour vos applications Symfony ou Node.js, vous pouvez centraliser l’ensemble de votre infrastructure sur la même plateforme.