From 994d6cc912ecb160e1495132bcd347f4511708bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Mon, 17 Nov 2025 20:33:53 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Add=20docs=20for=20using=20FastA?= =?UTF-8?q?PI=20Cloud=20(#14359)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 57 ++++++++++++++++++ docs/en/data/sponsors.yml | 4 ++ docs/en/docs/deployment/cloud.md | 16 +++-- docs/en/docs/deployment/fastapicloud.md | 65 +++++++++++++++++++++ docs/en/docs/deployment/index.md | 2 + docs/en/docs/img/sponsors/fastapicloud.png | Bin 0 -> 16777 bytes docs/en/docs/index.md | 62 +++++++++++++++++++- docs/en/docs/tutorial/first-steps.md | 57 ++++++++++++++++++ docs/en/mkdocs.yml | 1 + docs/en/overrides/main.html | 7 +++ scripts/docs.py | 10 +++- 11 files changed, 273 insertions(+), 8 deletions(-) create mode 100644 docs/en/docs/deployment/fastapicloud.md create mode 100644 docs/en/docs/img/sponsors/fastapicloud.png diff --git a/README.md b/README.md index 09cd38da1..9864fa1ef 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,11 @@ The key features are: ## Sponsors +### Keystone Sponsor + + + +### Gold and Silver Sponsors @@ -447,6 +452,58 @@ For a more complete example including more features, see the FastAPI Cloud, go and join the waiting list if you haven't. 🚀 + +If you already have a **FastAPI Cloud** account (we invited you from the waiting list 😉), you can deploy your application with one command. + +Before deploying, make sure you are logged in: + +
+ +```console +$ fastapi login + +You are logged in to FastAPI Cloud 🚀 +``` + +
+ +Then deploy your app: + +
+ +```console +$ fastapi deploy + +Deploying to FastAPI Cloud... + +✅ Deployment successful! + +🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev +``` + +
+ +That's it! Now you can access your app at that URL. ✨ + +#### About FastAPI Cloud + +**FastAPI Cloud** is built by the same author and team behind **FastAPI**. + +It streamlines the process of **building**, **deploying**, and **accessing** an API with minimal effort. + +It brings the same **developer experience** of building apps with FastAPI to **deploying** them to the cloud. 🎉 + +FastAPI Cloud is the primary sponsor and funding provider for the *FastAPI and friends* open source projects. ✨ + +#### Deploy to other cloud providers + +FastAPI is open source and based on standards. You can deploy FastAPI apps to any cloud provider you choose. + +Follow your cloud provider's guides to deploy FastAPI apps with them. 🤓 + ## Performance Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index 943b92adb..b8cc31dbe 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -1,3 +1,7 @@ +keystone: + - url: https://fastapicloud.com + title: FastAPI Cloud. By the same team behind FastAPI. You code. We Cloud. + img: https://fastapi.tiangolo.com/img/sponsors/fastapicloud.png gold: - url: https://blockbee.io?ref=fastapi title: BlockBee Cryptocurrency Payment Gateway diff --git a/docs/en/docs/deployment/cloud.md b/docs/en/docs/deployment/cloud.md index c88c4b51a..bdba87bce 100644 --- a/docs/en/docs/deployment/cloud.md +++ b/docs/en/docs/deployment/cloud.md @@ -4,13 +4,21 @@ You can use virtually **any cloud provider** to deploy your FastAPI application. In most of the cases, the main cloud providers have guides to deploy FastAPI with them. +## FastAPI Cloud + +**FastAPI Cloud** is built by the same author and team behind **FastAPI**. + +It streamlines the process of **building**, **deploying**, and **accessing** an API with minimal effort. + +It brings the same **developer experience** of building apps with FastAPI to **deploying** them to the cloud. 🎉 + +FastAPI Cloud is the primary sponsor and funding provider for the *FastAPI and friends* open source projects. ✨ + ## Cloud Providers - Sponsors { #cloud-providers-sponsors } -Some cloud providers ✨ [**sponsor FastAPI**](../help-fastapi.md#sponsor-the-author){.internal-link target=_blank} ✨, this ensures the continued and healthy **development** of FastAPI and its **ecosystem**. +Some other cloud providers ✨ [**sponsor FastAPI**](../help-fastapi.md#sponsor-the-author){.internal-link target=_blank} ✨ too. 🙇 -And it shows their true commitment to FastAPI and its **community** (you), as they not only want to provide you a **good service** but also want to make sure you have a **good and healthy framework**, FastAPI. 🙇 - -You might want to try their services and follow their guides: +You might also want to consider them to follow their guides and try their services: * Render * Railway diff --git a/docs/en/docs/deployment/fastapicloud.md b/docs/en/docs/deployment/fastapicloud.md new file mode 100644 index 000000000..b0889974f --- /dev/null +++ b/docs/en/docs/deployment/fastapicloud.md @@ -0,0 +1,65 @@ +# FastAPI Cloud { #fastapi-cloud } + +You can deploy your FastAPI app to FastAPI Cloud with **one command**, go and join the waiting list if you haven't. 🚀 + +## Login { #login } + +Make sure you already have a **FastAPI Cloud** account (we invited you from the waiting list 😉). + +Then log in: + +
+ +```console +$ fastapi login + +You are logged in to FastAPI Cloud 🚀 +``` + +
+ +## Deploy { #deploy } + +Now deploy your app, with **one command**: + +
+ +```console +$ fastapi deploy + +Deploying to FastAPI Cloud... + +✅ Deployment successful! + +🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev +``` + +
+ +That's it! Now you can access your app at that URL. ✨ + +## About FastAPI Cloud { #about-fastapi-cloud } + +**FastAPI Cloud** is built by the same author and team behind **FastAPI**. + +It streamlines the process of **building**, **deploying**, and **accessing** an API with minimal effort. + +It brings the same **developer experience** of building apps with FastAPI to **deploying** them to the cloud. 🎉 + +It will also take care of most of the things you would need when deploying an app, like: + +* HTTPS +* Replication, with autoscaling based on requests +* etc. + +FastAPI Cloud is the primary sponsor and funding provider for the *FastAPI and friends* open source projects. ✨ + +## Deploy to other cloud providers { #deploy-to-other-cloud-providers } + +FastAPI is open source and based on standards. You can deploy FastAPI apps to any cloud provider you choose. + +Follow your cloud provider's guides to deploy FastAPI apps with them. 🤓 + +## Deploy your own server { #deploy-your-own-server } + +I will also teach you later in this **Deployment** guide all the details, so you can understand what is going on, what needs to happen, or how to deploy FastAPI apps on your own, also with your own servers. 🤓 diff --git a/docs/en/docs/deployment/index.md b/docs/en/docs/deployment/index.md index 2364791a7..8d7521e73 100644 --- a/docs/en/docs/deployment/index.md +++ b/docs/en/docs/deployment/index.md @@ -16,6 +16,8 @@ There are several ways to do it depending on your specific use case and the tool You could **deploy a server** yourself using a combination of tools, you could use a **cloud service** that does part of the work for you, or other possible options. +For example, we, the team behind FastAPI, built **FastAPI Cloud**, to make deploying FastAPI apps to the cloud as streamlined as possible, with the same developer experience of working with FastAPI. + I will show you some of the main concepts you should probably keep in mind when deploying a **FastAPI** application (although most of it applies to any other type of web application). You will see more details to keep in mind and some of the techniques to do it in the next sections. ✨ diff --git a/docs/en/docs/img/sponsors/fastapicloud.png b/docs/en/docs/img/sponsors/fastapicloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c23dec220951ca1e5321411ea7200aee48cbe89d GIT binary patch literal 16777 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 -{% if sponsors %} +### Keystone Sponsor + +{% for sponsor in sponsors.keystone -%} + +{% endfor -%} + +### Gold and Silver Sponsors + {% for sponsor in sponsors.gold -%} {% endfor -%} {%- for sponsor in sponsors.silver -%} {% endfor %} -{% endif %} @@ -444,6 +450,58 @@ For a more complete example including more features, see the FastAPI Cloud, go and join the waiting list if you haven't. 🚀 + +If you already have a **FastAPI Cloud** account (we invited you from the waiting list 😉), you can deploy your application with one command. + +Before deploying, make sure you are logged in: + +
+ +```console +$ fastapi login + +You are logged in to FastAPI Cloud 🚀 +``` + +
+ +Then deploy your app: + +
+ +```console +$ fastapi deploy + +Deploying to FastAPI Cloud... + +✅ Deployment successful! + +🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev +``` + +
+ +That's it! Now you can access your app at that URL. ✨ + +#### About FastAPI Cloud { #about-fastapi-cloud } + +**FastAPI Cloud** is built by the same author and team behind **FastAPI**. + +It streamlines the process of **building**, **deploying**, and **accessing** an API with minimal effort. + +It brings the same **developer experience** of building apps with FastAPI to **deploying** them to the cloud. 🎉 + +FastAPI Cloud is the primary sponsor and funding provider for the *FastAPI and friends* open source projects. ✨ + +#### Deploy to other cloud providers { #deploy-to-other-cloud-providers } + +FastAPI is open source and based on standards. You can deploy FastAPI apps to any cloud provider you choose. + +Follow your cloud provider's guides to deploy FastAPI apps with them. 🤓 + ## Performance { #performance } Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) diff --git a/docs/en/docs/tutorial/first-steps.md b/docs/en/docs/tutorial/first-steps.md index 7d4c12de8..b88ff6a18 100644 --- a/docs/en/docs/tutorial/first-steps.md +++ b/docs/en/docs/tutorial/first-steps.md @@ -143,6 +143,42 @@ And there are dozens of alternatives, all based on OpenAPI. You could easily add You could also use it to generate code automatically, for clients that communicate with your API. For example, frontend, mobile or IoT applications. +### Deploy your app (optional) { #deploy-your-app-optional } + +You can optionally deploy your FastAPI app to FastAPI Cloud, go and join the waiting list if you haven't. 🚀 + +If you already have a **FastAPI Cloud** account (we invited you from the waiting list 😉), you can deploy your application with one command. + +Before deploying, make sure you are logged in: + +
+ +```console +$ fastapi login + +You are logged in to FastAPI Cloud 🚀 +``` + +
+ +Then deploy your app: + +
+ +```console +$ fastapi deploy + +Deploying to FastAPI Cloud... + +✅ Deployment successful! + +🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev +``` + +
+ +That's it! Now you can access your app at that URL. ✨ + ## Recap, step by step { #recap-step-by-step } ### Step 1: import `FastAPI` { #step-1-import-fastapi } @@ -314,6 +350,26 @@ You can also return Pydantic models (you'll see more about that later). There are many other objects and models that will be automatically converted to JSON (including ORMs, etc). Try using your favorite ones, it's highly probable that they are already supported. +### Step 6: Deploy it { #step-6-deploy-it } + +Deploy your app to **FastAPI Cloud** with one command: `fastapi deploy`. 🎉 + +#### About FastAPI Cloud { #about-fastapi-cloud } + +**FastAPI Cloud** is built by the same author and team behind **FastAPI**. + +It streamlines the process of **building**, **deploying**, and **accessing** an API with minimal effort. + +It brings the same **developer experience** of building apps with FastAPI to **deploying** them to the cloud. 🎉 + +FastAPI Cloud is the primary sponsor and funding provider for the *FastAPI and friends* open source projects. ✨ + +#### Deploy to other cloud providers { #deploy-to-other-cloud-providers } + +FastAPI is open source and based on standards. You can deploy FastAPI apps to any cloud provider you choose. + +Follow your cloud provider's guides to deploy FastAPI apps with them. 🤓 + ## Recap { #recap } * Import `FastAPI`. @@ -321,3 +377,4 @@ There are many other objects and models that will be automatically converted to * Write a **path operation decorator** using decorators like `@app.get("/")`. * Define a **path operation function**; for example, `def root(): ...`. * Run the development server using the command `fastapi dev`. +* Optionally deploy your app with `fastapi deploy`. diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml index 323035240..df47c6f9c 100644 --- a/docs/en/mkdocs.yml +++ b/docs/en/mkdocs.yml @@ -192,6 +192,7 @@ nav: - Deployment: - deployment/index.md - deployment/versions.md + - deployment/fastapicloud.md - deployment/https.md - deployment/manually.md - deployment/concepts.md diff --git a/docs/en/overrides/main.html b/docs/en/overrides/main.html index be31bd75c..01d39817b 100644 --- a/docs/en/overrides/main.html +++ b/docs/en/overrides/main.html @@ -3,6 +3,13 @@ {% block announce %}