---
title: "Déployer un conteneur Docker par MCP, avec while.sh"
url: https://while.sh/fr/guides/conteneur-docker/
author: "Aloïs Oddon, cofondateur de Nextmap"
updated: 2026-11-02
---

# Mettre en ligne un conteneur Docker depuis votre agent IA, par MCP

Votre projet a son Dockerfile ? Branché à while par MCP, votre agent IA le met en ligne tel quel, en HTTPS, quel que soit le langage.

## Prérequis

- Un projet avec son Dockerfile, dans n'importe quel langage.
- Un agent IA qui travaille dans un terminal : Claude Code, Codex, Cursor ou Gemini CLI.

## Étape 1 : Donnez ces instructions à votre agent

Ouvrez votre agent dans le dossier de votre appli, et collez-lui ces instructions :

```text titre="Instructions"
Connecte-toi à while avec mon compte (while.sh/agents), puis mets mon appli en ligne.
```

Sans compte, votre agent met votre appli en ligne à l'essai, en une demande. Pour la garder, ouvrez le lien qu'il vous donne et créez votre compte.

Avec votre compte, votre agent ajoute lui-même le serveur MCP de while. S'il vous le demande, relancez-le. Au premier appel à while, une page s'ouvre dans votre navigateur. Dans Claude Code, si elle ne s'ouvre pas, tapez /mcp, choisissez while, puis Authenticate. Sur cette page, choisissez votre appli, ou « Une nouvelle appli », puis cliquez sur Autoriser.

## Étape 2 : Ouvrez votre appli

Votre agent vous donne l'adresse de votre appli, par exemple `https://mon-appli.while.cloud`, en HTTPS.

## Ce que fait votre agent

Il écrit while.yaml à côté de votre Dockerfile :

```yaml titre="while.yaml"
apiVersion: while/v1
project: mon-appli
services:
  - name: web
    port: 8080
    health:
      path: /
```

Votre Dockerfile construit l'image de chaque version, et votre conteneur ne tourne jamais en root, même s'il oublie la ligne `USER`. Celui-ci sert une page en Python, sur le port reçu dans `PORT` (source 1) :

```dockerfile titre="Dockerfile"
FROM python:3.12-slim
WORKDIR /app
COPY index.html .
USER 1000:1000
CMD ["sh", "-c", "python -m http.server ${PORT:-8080} --bind 0.0.0.0"]
```

## Mettre en ligne une image déjà construite

> Vous, à votre agent : Mets en ligne l'image que notre CI vient de construire.

Votre agent met l'image en ligne telle quelle, par son digest, sans la reconstruire.

## Corriger les failles de votre image

> Vous, à votre agent : Corrige les failles de notre image.

Les paquets de votre image, ceux du système compris, sont comparés aux failles connues à chaque mise en ligne, puis chaque jour. Votre agent est prévenu d'une faille grave, et met votre image à jour.

## Ajouter une base de données

> Vous, à votre agent : Ajoute une base PostgreSQL.

Votre agent déclare la base dans while.yaml, et son adresse arrive à votre code dans `DATABASE_URL`. Elle est sauvegardée chaque jour, et revient à un instant précis si besoin.

## Réserver votre appli à vos collègues

> Vous, à votre agent : Réserve l'appli aux personnes de l'entreprise.

Votre agent ajoute deux lignes au service :

```yaml titre="while.yaml"
    access: internal
    email_domains: [acme.fr]
```

Une fois votre Google Workspace ou Microsoft 365 relié à while, avec l'offre Pro, vos collègues l'ouvrent avec leur compte habituel, et votre code reçoit leur nom et leur adresse électronique, sans page de connexion à écrire.

## Passer sur votre propre domaine

> Vous, à votre agent : Mets l'appli sur planning.acme.fr.

Votre agent déclare le domaine, vous ajoutez les enregistrements DNS qu'il vous donne, et le certificat HTTPS suit.

## Revenir à la version d'avant

> Vous, à votre agent : Reviens à la version d'avant.

Dans les 30 minutes qui suivent une mise en ligne, la version d'avant revient en une seconde. Ensuite, en quelques secondes. Une fois la version d'avant revenue, votre agent lit ce qui a cassé dans les journaux de while, corrige et remet en ligne.

## Prochaines étapes

- [Mettre en ligne une API Node.js et sa base PostgreSQL](/fr/guides/api-node-postgresql/)
- [Lancer une tâche planifiée](/fr/guides/tache-planifiee/)
- [Comparer les hébergeurs qui ont un serveur MCP](/fr/comparatifs/hebergement-appli-claude-code/)

## Sources

1. [Docker, la référence du Dockerfile (CMD, forme exec et variables)](https://docs.docker.com/reference/dockerfile/), 2026-11-01

## Questions

### Quels langages ?

Tous : Rails, Laravel, Spring, .NET, Rust ou autre, dès qu'il y a un Dockerfile.

### Sur quel port mon conteneur doit-il écouter ?

Sur celui de while.yaml, qu'il reçoit dans la variable PORT, et sur toutes ses adresses.

### Mes tests passent-ils avant la mise en ligne ?

Oui, si votre Dockerfile a un étage nommé test : il passe d'abord, et son échec arrête la mise en ligne.
