L'application de vote d'exemple de Docker tourne sous forme de cinq conteneurs. Une application web Python reçoit les votes et les transmet à Redis. Un worker .NET transfère chaque vote dans Postgres. Une page Node.js affiche les résultats au fur et à mesure. Nous l'avons fait tourner sur une VM de test (qui n'est pas un serveur DreamHost) pour savoir quelle taille de serveur il lui faut. Dix minutes après le démarrage, les cinq conteneurs utilisaient 177 Mio à eux tous.
Les cinq conteneurs doivent rester actifs : sur Fly.io, Google Cloud Run et AWS Fargate, vous payez donc chacun d'eux 24 h/24. Chaque plateforme facture aussi la base de données, Redis, le réseau et le trafic sortant sur des lignes séparées. Pour les factures ci-dessous, nous avons retenu sur chaque plateforme la plus petite taille capable d'absorber ce que la pile a consommé. Les trois plateformes chiffrent ainsi la même charge de travail.
Ce qu'a consommé la stack sur notre VM de test
La VM avait la même taille que notre offre Stack 4. Nous avons lancé la pile à partir des images publiées par Docker et l'avons laissée se stabiliser. Nous avons ensuite utilisé k6 pour envoyer 20 votes et 2 affichages de la page de résultats par seconde pendant cinq minutes. Les 6 602 requêtes ont toutes obtenu une réponse, et 95 % d'entre elles en moins de 7,8 ms.
| Conteneur | Mémoire, stabilisée / pic | Plus petite taille adaptée, Fly / Run / Fargate |
|---|---|---|
| Vote (application web Python) | 92 / 95 MiB | 256 MB / 1 vCPU / 0.25 vCPU |
| Page de résultats (application web Node) | 22 / 30 MiB | 256 MB / 1 vCPU / 0.25 vCPU |
| Worker (.NET) | 30 / 36 MiB | 256 Mo / pool de 1 vCPU / 0,25 vCPU |
| Redis | 6 / 29 MiB | 256 Mo / Memorystore 1 Gio / 0,25 vCPU |
| Postgres | 28 / 30 MiB | 1 Go / 0,6 Go / 1 Gio, tous gérés |
| Les cinq | 177 / 197 Mio lors du premier test | Chiffré ligne par ligne ci-dessous |
La valeur stabilisée est la médiane de 12 relevés docker stats après dix minutes. Le pic est le relevé le plus élevé à 20 votes par seconde. Les pics proviennent de deux tests. Lors du premier, sur la VM de 4 Go, Redis a culminé à 6 Mio et les cinq conteneurs réunis à 197 Mio. Lors d'un second test sur une VM de 8 Go, Redis a atteint 29 Mio, le chiffre indiqué sur sa ligne.
Aucun conteneur n'a dépassé environ 105 Mio, même à 200 votes par seconde. La plus petite taille vendue par chaque plateforme offre donc encore à chacun plus du double de sa mémoire au pic. Les factures ci-dessous utilisent ces plus petites tailles, sauf lorsque les règles de CPU de Cloud Run en imposent davantage.
Le CPU a à peine bougé à 20 votes par seconde. La médiane du conteneur de vote était de 4 % d'un CPU lors du second test et de 9,3 % lors du premier. Un vCPU partagé Fly peut utiliser 6,25 % avant de puiser dans son crédit de burst : l'application de vote entamerait donc ce crédit une partie du temps. Nous avons aussi limité les conteneurs de vote, de résultats, du worker et de Redis à 0,25 vCPU et 512 Mio, soit la plus petite tâche Fargate, à l'aide des limites Linux sur notre seconde VM de test. Nous n'avons pas limité Postgres, puisque les factures le placent sur RDS. Lors de ce second test, la latence p95 de la pile était de 6,8 ms avec limites et de 8,6 ms sans. Cet écart reste dans la variation normale d'un test à l'autre. L'application de vote serait probablement la première à atteindre cette limite à mesure que le trafic augmente.
Avec la pile et Portainer en marche, la VM entière utilisait 595 Mio et disposait encore de 3 309 Mio. Vous pourriez donc faire tourner cette pile sur Stack 4, moins cher que Stack 8. Nous choisirions tout de même Stack 8, que la page Docker recommande pour les applications en production. Cette offre laisse de la marge pour une version bien plus sollicitée de cette pile et pour une base de données qui grossit.
Factures mensuelles pour trois tailles
Les prix de Fly.io sont ceux d'Ashburn (Virginie), ceux de Cloud Run ceux de l'Iowa et ceux d'AWS ceux de US East (Virginie du Nord). Chaque prix utilise les tarifs à la demande publiés, relevés le 20 octobre 2026, pour un mois de 730 heures, hors taxes. Fly.io affiche le prix des Machines pour 30 jours. Nous l'avons donc ajusté à 730 heures. Managed Postgres est compté à son prix mensuel affiché.
- Scénario 1 : la pile ci-dessus sans la page de résultats, avec 1 million de requêtes, 50 Go de trafic sortant et une base de données de 5 Go par mois.
- Scénario 2 : ajoute la page de résultats comme second service web, avec 3 millions de requêtes, 150 Go de trafic sortant et une base de données de 10 Go.
- Scénario 3 : deux copies de chaque service web, avec 10 millions de requêtes, 1 To de trafic sortant et une base de données de 20 Go.
| Votre stack toujours active | Fly.io, par mois | Google Cloud Run, par mois | AWS Fargate, par mois | Docker VPS Stack 8, quel que soit le scénario |
|---|---|---|---|---|
| Scénario 1 : application web, worker, Redis, Postgres | $47.06 | $83.74 | $70.68 | $13.99/mopendant 3 mois, puis $21.99/mo |
| Scénario 2 : deux services web, worker, Redis, Postgres | $52.68 | $111.57 | $86.84 | |
| Scénario 3 : deux copies de chaque service web, 1 To sortant | $76.92 | $248.33 | $194.16 |

Chaque facture de plateforme inclut une base de données gérée avec sauvegardes. Sur le serveur, c'est vous qui gérez Postgres et ses sauvegardes. Du scénario 1 au scénario 3, la facture de Cloud Run triple environ et celle de Fargate presque. Celle de Fly.io augmente d'environ 60 %.
Où va l'argent du scénario 1
| Poste | Fly.io | Google Cloud Run | AWS Fargate |
|---|---|---|---|
| Application web | 2,22 $, Machine de 256 Mo | 12,01 $, une instance minimale de 1 vCPU | 7,21 $, tâche ARM de 0,25 vCPU |
| Worker | $2.22 | 31,17 $, pool de workers à 1 vCPU | $7.21 |
| Redis | 2,22 $, Machine de 256 Mo | 35,77 $, Memorystore Basic 1 Gio | 7,21 $, tâche |
| Postgres | 39,40 $, Managed Postgres Basic et 5 Go | 9,77 $, db-f1-micro, SSD de 10 Gio et sauvegardes | 13,98 $, db.t4g.micro et 20 Go gp3 |
| Équilibreur de charge, adresses IP, TLS | 0 $, IPv4 partagée et certificats gratuits | 0 $, l'adresse run.app | 35,08 $, équilibreur de charge et 5 adresses IPv4 |
| Requêtes | Inclus | $0.40 | Inclus |
| Trafic sortant, 50 Go | $1.00 | $5.47 | 0 $, dans les 100 Go gratuits |
| Offre gratuite | Aucune pour les nouvelles organisations | -$10.84 | Crédits non comptés ; 100 Go gratuits comptés ci-dessus |
| Total (additionné avant arrondi) | $47.06 | $83.74 | $70.68 |
La base de données représente l'essentiel de la facture de Fly.io. Managed Postgres et son stockage reviennent à 39,40 $, dont 38 $ pour l'offre Basic. Les trois Machines coûtent 6,66 $ à elles toutes. Chaque offre Managed Postgres inclut la haute disponibilité, les sauvegardes et le pooling de connexions.
Sur Cloud Run, vous garderiez une instance minimale sur le service web pour que les requêtes n'attendent pas un démarrage à froid. Elle reçoit 1 vCPU, car un service ne peut utiliser moins de 1 vCPU que si chaque instance traite une seule requête à la fois. Nous avons supposé 100 ms de temps actif par requête, puisque Cloud Run arrondit le temps facturé aux 100 ms supérieures. Le worker tourne sous forme de pool de workers, l'option de Google pour les tâches d'arrière-plan continues. Or un pool de workers démarre à 1 vCPU. Nous l'avons chiffré à partir de la grille tarifaire de Google. L'exemple chiffré de Google pour un pool de workers de 1 vCPU et 512 Mio, en Belgique, revient à 16,83 $ par mois avant l'offre gratuite. C'est moins que ce que donne la grille tarifaire de Google : vérifiez donc votre cas dans le simulateur de prix de Google.
Chez Google, Redis est la ligne la plus chère de la facture. Un conteneur Redis pourrait tourner sous forme de pool de workers, qui accepte les connexions provenant de votre VPC sur une IP privée. Mais il démarrerait lui aussi à un vCPU complet, soit environ 31 $ par mois. Nous avons donc chiffré Memorystore for Redis, le Redis géré de Google, dont la plus petite instance Basic contient 1 Gio.
Chez AWS, vous paierez davantage pour le réseau que pour les conteneurs. Les trois tâches Fargate coûtent 21,63 $ à elles toutes, alors que l'équilibreur de charge et les adresses IP reviennent à 35,08 $. Nous avons chiffré les tâches en Linux/ARM. En x86, chacune coûterait environ 9,01 $ au lieu de 7,21 $. Un Application Load Balancer est facturé à l'heure et doit utiliser au moins deux zones de disponibilité. AWS facture 0,005 $ de l'heure, soit environ 3,65 $ par mois, pour chaque adresse IPv4 publique. Nous avons compté cinq adresses : une pour chacune des trois tâches, plus deux pour l'équilibreur de charge, une par zone de disponibilité.
Le trafic sortant prend le dessus à mesure que le trafic augmente. Avec le 1 To mensuel du scénario 3, c'est la ligne la plus chère chez Google, à 111,64 $. Chez AWS, il revient à 81,00 $ après les 100 Go gratuits. Fly.io facture 0,02 $ le Go, soit 20,00 $ le téraoctet. Sur un Docker VPS, vous ne payez pas au Go, sous réserve d'un usage raisonnable.
Ce que comprend chaque prix
| Fly.io, Cloud Run, Fargate | Docker VPS | |
|---|---|---|
| Base de données | Postgres géré avec sauvegardes. L'offre Basic de Fly inclut la haute disponibilité. Les machines à cœur partagé de Cloud SQL n'ont pas de SLA. | Postgres tourne dans un conteneur que vous gérez. Selon le centre d'aide de DreamHost, un VPS n'inclut pas de sauvegardes automatiques. |
| Emplacement | La région de votre choix, ici Ashburn, l'Iowa ou la Virginie du Nord | Selon le centre d'aide de DreamHost, chaque VPS est hébergé dans son centre de données US East à Ashburn, en Virginie. Vous pouvez passer jusqu'à Stack 32. |
| CPU | vCPU partagés ou fractionnés sur Fly.io et Fargate | 2 vCPU AMD EPYC sur Stack 8 |
| Trafic sortant | Facturé au Go au-delà de l'éventuel quota gratuit | Illimité, sous réserve d'un usage raisonnable |
| Mises à jour | La plateforme gère les hôtes, et vous mettez à jour vos images | Le support de DreamHost est disponible 24 h/24, 7 j/7 pour le matériel, le réseau et la connectivité. Vous gérez le système d'exploitation, les logiciels et la configuration, y compris vos images. |
| Tableau de bord | La console de chaque plateforme | Portainer CE, installé |
Faire tourner Postgres vous-même comme application Fly.io réduit aussi la facture de Fly.io, mais vous prenez alors en charge le même travail sur la base de données que sur un serveur. Pour une comparaison portant uniquement sur la base de données, voyez ce que coûte Postgres géré à lui seul. Si votre application active en permanence est une seule application Laravel, les prix de Laravel Cloud et Forge pour une application détaillent ce cas, planificateur et worker de file d'attente compris. Et si Portainer est plus complet que nécessaire, nous avons comparé Portainer à des tableaux de bord Docker plus légers sur un petit serveur.
Estimez le coût de votre propre stack
- Listez les conteneurs qui tournent tout le mois
Si un conteneur doit répondre à toute heure ou traite une file d'attente, il tournera tout le mois : chiffrez-le comme actif en permanence. Laissez tout ce qui peut se mettre en veille sur une plateforme qui facture à la requête. Un seul petit conteneur de ce type peut souvent tenir dans l'offre gratuite mensuelle de Cloud Run.
- Mesurez ce que consomme chaque conteneur
Exécutez cette commande sur une machine où la pile tourne, une première fois après sa stabilisation, puis sous votre trafic habituel :
bashdocker stats --no-stream \ --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"Notre pile utilisait 335 Mio deux minutes après son démarrage et environ la moitié au bout de dix minutes. Laissez donc à la vôtre le temps de se stabiliser avant de relever les chiffres.
- Choisissez la plus petite taille suffisante
Prévoyez environ 1,5 fois le relevé le plus élevé de chaque conteneur. Vérifiez ensuite les minimums de chaque plateforme dans le tableau ci-dessus.
- Ajoutez les postes hors conteneurs
Ajoutez ensuite la base de données, Redis, l'équilibreur de charge, les adresses IP et le trafic sortant. Dans nos trois scénarios, ces lignes dépassent le calcul sur toutes les plateformes. Le détail par service de votre dernière facture montre celles que vous payez déjà.
- Si vous migrez, sauvegardez Postgres avant de basculer
Un dump du conteneur de base de données tient en une commande. Placez-la dans un petit script que cron exécute chaque nuit. Pour la base de données de l'application de vote :
bashdocker compose exec -T db \ pg_dump -U postgres -Fc postgres \ > votes-$(date +%F).dumpCopiez chaque dump vers un stockage hors du serveur, et restaurez-en un de temps en temps dans un conteneur de rechange pour vérifier qu'il fonctionne.
Restez sur votre plateforme si
Certaines parties de votre application redescendent à zéro entre les requêtes, vous servez des utilisateurs dans plusieurs régions, ou vous voulez que quelqu'un d'autre gère le basculement et les sauvegardes de la base de données.
Réduisez d'abord la facture si
Une ligne est bien plus élevée que les autres, par exemple un pool de workers bloqué à son minimum de 1 vCPU, et un engagement d'un an la couvre.
Passez à un Docker VPS si
Toute la pile tourne tout le mois dans une seule région, votre trafic sortant dépasse peu à peu les quotas gratuits, et vous êtes prêt à gérer Postgres et ses sauvegardes.
Notre méthode de mesure
DreamHost a réalisé le test le 20 octobre 2026 sur une VM Colima, sur un Mac à puce Apple. Elle exécutait Ubuntu 24.04 en aarch64 avec Docker 29.5.2. Elle disposait de 3 904 Mio de mémoire utilisable et d'aucun swap. Le test avec limites et la répétition du test de charge ont tourné sur une seconde VM avec le même nombre de CPU et deux fois plus de mémoire, car la mémoire supplémentaire ne change pas ce qu'utilise chaque conteneur. k6 envoyait la charge depuis la même VM et partageait donc le CPU avec la pile. Sous charge, docker stats s'exécutait toutes les 3 à 5 secondes et pouvait donc manquer un pic plus court. Le palier à 200 votes par seconde a tourné sur une pile déjà chaude, juste après les paliers plus légers.
Les offres VPS de DreamHost indiquent des processeurs AMD EPYC, donc x86, alors que la VM tournait en arm64. Nous n'avons rien exécuté sur Fly.io, Cloud Run ou Fargate : leurs démarrages à froid et le comportement de leur CPU ne figurent donc pas dans ces chiffres. L'exécution plafonnée ne fait qu'imiter une tâche Fargate et laisse de côté l'agent Service Connect, qui partage le CPU et la mémoire de chaque tâche sur Fargate. Cloud SQL est chiffré avec 10 Gio de stockage SSD, un choix de notre part. Les factures excluent les taxes, la journalisation, le stockage du registre de conteneurs, les crédits d'inscription et les offres de support payantes. Elles appliquent l'offre gratuite de Google à la fois à ses services et à ses pools de workers. Si Google les compte comme une seule franchise, ses factures sont plus élevées. Tous les tarifs des plateformes ont été relevés le 16 octobre puis le 20 octobre 2026, sans aucun changement.
FAQ sur le coût des conteneurs toujours actifs
Fly.io est-il encore gratuit ?
Les nouvelles organisations n'ont aucune offre gratuite ni franchise mensuelle gratuite sur Fly.io. L'essai dure 2 heures d'exécution de Machine ou 7 jours, selon ce qui arrive en premier.
Google Cloud Run est-il gratuit pour toujours ?
L'offre gratuite se réinitialise chaque mois, s'applique à l'ensemble de votre compte de facturation et prend la forme d'une remise. Pour les services basés sur les requêtes, elle couvre 180 000 vCPU-secondes, 360 000 Gio-secondes et 2 millions de requêtes. Google indique une deuxième franchise pour les pools de workers. Nous avons appliqué les deux, ce qui a retranché 10,84 $ au scénario 1. Si Google les compte comme une seule franchise, cette facture augmente de 5,22 $.
Une passerelle NAT changerait-elle la facture Fargate ?
Oui, elle l'alourdit. Si vos tâches se trouvent dans des sous-réseaux privés derrière une passerelle NAT, la grille tarifaire VPC d'AWS indique 0,045 $ de l'heure pour la passerelle, soit environ 32,85 $ par mois, plus 0,045 $ par Go traité. Nos factures attribuent plutôt une adresse IPv4 publique à chaque tâche.
Un engagement d'un an comblerait-il l'écart ?
Un engagement d'un an ne réduit que le calcul : avec un bloc de réservation, le scénario 1 revient à 45,06 $ sur Fly.io. Les remises sur engagement d'utilisation d'un an ramènent Cloud Run à 72,97 $. Un Compute Savings Plan d'un an ramène Fargate à 66,08 $, RDS restant à la demande. Managed Postgres de Fly, le niveau 1 Gio de Memorystore et Cloud SQL à cœur partagé ne bénéficient d'aucune remise.
Sources
- Fly.io Resource Pricing, Fly.io, relevé le 20 oct. 2026. fly.io/docs/about/pricing
- Managed Postgres, Fly.io, relevé le 20 oct. 2026. fly.io/docs/mpg
- Free trial, Fly.io, relevé le 20 oct. 2026. fly.io/docs/about/free-trial
- CPU performance, Fly.io, relevé le 16 oct. 2026. fly.io/docs/machines/cpu-performance
- Cloud Run pricing, Google Cloud, relevé le 20 oct. 2026. cloud.google.com/run/pricing?hl=fr
- Configure CPU limits for services, Google Cloud, relevé le 16 oct. 2026. docs.cloud.google.com/run/docs/configuring/services/cpu?hl=fr
- Configure CPU limits for worker pools, Google Cloud, relevé le 16 oct. 2026. docs.cloud.google.com/run/docs/configuring/workerpools/cpu?hl=fr
- Deploy worker pools, Google Cloud, relevé le 16 oct. 2026. docs.cloud.google.com/run/docs/deploy-worker-pools?hl=fr
- Cloud SQL pricing, Google Cloud, relevé le 20 oct. 2026. cloud.google.com/sql/pricing?hl=fr
- Memorystore for Redis pricing, Google Cloud, relevé le 20 oct. 2026. cloud.google.com/memorystore/docs/redis/pricing?hl=fr
- Network pricing, Google Cloud, relevé le 20 oct. 2026. cloud.google.com/vpc/network-pricing?hl=fr
- AWS Fargate Pricing, Amazon Web Services, relevé le 20 oct. 2026. aws.amazon.com/fr/fargate/pricing
- AWS Price List API files (ECS, ELB, VPC, RDS, Data Transfer, US East), Amazon Web Services, relevé le 20 oct. 2026. pricing.us-east-1.amazonaws.com/offers/v1.0/aws/index.json
- Compute Savings Plans price list, US East, Amazon Web Services, relevé le 16 oct. 2026. pricing.us-east-1.amazonaws.com/savingsPlan/v1.0/aws/AWSComputeSavingsPlan/current/region_index.json
- Fargate task CPU and memory, Amazon Web Services, relevé le 16 oct. 2026. docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/fargate-tasks-services.html
- Elastic Load Balancing pricing, Amazon Web Services, relevé le 20 oct. 2026. aws.amazon.com/fr/elasticloadbalancing/pricing
- Application Load Balancers, Amazon Web Services, relevé le 16 oct. 2026. docs.aws.amazon.com/fr_fr/elasticloadbalancing/latest/application/application-load-balancers.html
- Amazon VPC pricing, Amazon Web Services, relevé le 20 oct. 2026. aws.amazon.com/fr/vpc/pricing
- Amazon ECS Service Connect, Amazon Web Services, relevé le 16 oct. 2026. docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-connect.html
- Amazon RDS DB instance storage, Amazon Web Services, relevé le 16 oct. 2026. docs.aws.amazon.com/fr_fr/AmazonRDS/latest/UserGuide/CHAP_Storage.html
- Amazon EC2 On-Demand Pricing (data transfer), Amazon Web Services, relevé le 20 oct. 2026. aws.amazon.com/fr/ec2/pricing/on-demand
- Example voting app, Docker (GitHub), relevé le 16 oct. 2026. github.com/dockersamples/example-voting-app
- Container runtime contract, Google Cloud, relevé le 16 oct. 2026. docs.cloud.google.com/run/docs/container-contract?hl=fr
- Docker VPS Hosting, DreamHost, relevé le 22 oct. 2026. dreamhost.com/hosting/vps/docker
- VPS overview, DreamHost Help Center, relevé le 22 oct. 2026. help.dreamhost.com/hc/en-us/articles/50476238203028-VPS-overview
- Resource Allocation Policy, DreamHost, relevé le 16 oct. 2026. dreamhost.com/legal/resource-allocation-policy