mirror of
https://github.com/fastapi/full-stack-fastapi-template.git
synced 2026-09-21 21:35:12 +00:00
98 lines
4.4 KiB
Markdown
98 lines
4.4 KiB
Markdown
# FastAPI Project - Deployment
|
|
|
|
Deploy the project to [FastAPI Cloud](https://fastapicloud.com) with the included GitHub Actions workflow.
|
|
|
|
## Create the FastAPI Cloud Application
|
|
|
|
Create an application in FastAPI Cloud and set its [Application Directory](https://fastapicloud.com/docs/builds-and-deployments/application-directory/) to `backend`.
|
|
|
|
Connect a PostgreSQL database using the [Neon](https://fastapicloud.com/docs/integrations/neon-integration/) or [Supabase](https://fastapicloud.com/docs/integrations/supabase-integration/) integration. Both integrations configure a `DATABASE_URL` secret automatically. You can also configure `DATABASE_URL` manually for another PostgreSQL provider.
|
|
|
|
## Configure the Application
|
|
|
|
### Environment Variables
|
|
|
|
Add these required [environment variables](https://fastapicloud.com/docs/builds-and-deployments/environment-variables/) to the FastAPI Cloud application:
|
|
|
|
* `PROJECT_NAME`: The name of the project, used in the API documentation and emails.
|
|
* `FIRST_SUPERUSER`: The email address of the first superuser.
|
|
* `FRONTEND_HOST`: The public URL of the application, such as the generated `https://your-app.fastapicloud.dev` URL or a custom domain.
|
|
|
|
To enable emails, add these optional environment variables with values from your email provider:
|
|
|
|
* `SMTP_HOST`
|
|
* `SMTP_USER`
|
|
* `EMAILS_FROM_EMAIL`
|
|
|
|
To enable Sentry, configure `SENTRY_DSN`.
|
|
|
|
### Secrets
|
|
|
|
Add these required values and mark them as secrets:
|
|
|
|
* `SECRET_KEY`: A secret key used to sign security tokens.
|
|
* `FIRST_SUPERUSER_PASSWORD`: The password of the first superuser.
|
|
* `DATABASE_URL`: The PostgreSQL connection URL, configured automatically when using a database integration.
|
|
|
|
To enable emails with an authenticated provider, add `SMTP_PASSWORD` as a secret.
|
|
|
|
You can generate secure values for `SECRET_KEY` and `FIRST_SUPERUSER_PASSWORD` with:
|
|
|
|
```bash
|
|
python -c "import secrets; print(secrets.token_urlsafe(32))"
|
|
```
|
|
|
|
## Configure Continuous Deployment
|
|
|
|
The included `.github/workflows/deploy.yml` workflow builds the frontend, prepares the database, and deploys the application whenever changes are pushed to `master`. You can also run it manually from the **Actions** tab.
|
|
|
|
Log in to FastAPI Cloud and configure the [deploy token](https://fastapicloud.com/docs/advanced-features/deploy-tokens/) and application ID as GitHub repository secrets:
|
|
|
|
```bash
|
|
uv run fastapi login
|
|
uv run fastapi cloud setup-ci --secrets-only --app-id <your-app-id>
|
|
```
|
|
|
|
If the GitHub CLI is installed and authenticated, the command configures `FASTAPI_CLOUD_TOKEN` and `FASTAPI_CLOUD_APP_ID` automatically. Otherwise, it prints the values so you can add them in your repository under **Settings** > **Secrets and variables** > **Actions**.
|
|
|
|
The workflow runs database migrations and creates the first superuser before deploying. In the repository's **Settings** > **Secrets and variables** > **Actions** page, add these repository variables:
|
|
|
|
* `PROJECT_NAME`
|
|
* `FIRST_SUPERUSER`
|
|
|
|
Add these repository secrets:
|
|
|
|
* `DATABASE_URL`
|
|
* `SECRET_KEY`
|
|
* `FIRST_SUPERUSER_PASSWORD`
|
|
|
|
Use the same values configured in FastAPI Cloud. For `DATABASE_URL`, use the connection URL from your database provider. The database must be reachable from GitHub-hosted runners so the preparation step can connect to it.
|
|
|
|
The deployment workflow performs these steps:
|
|
|
|
1. Installs and builds the frontend into `backend/app/frontend`.
|
|
2. Runs `backend/scripts/prestart.sh` to apply database migrations and create the first superuser.
|
|
3. Deploys the project with `uv run fastapi deploy`.
|
|
|
|
## URLs
|
|
|
|
Replace `your-app.fastapicloud.dev` with the URL of your FastAPI Cloud application.
|
|
|
|
Application (frontend and API): `https://your-app.fastapicloud.dev`
|
|
|
|
Interactive API docs: `https://your-app.fastapicloud.dev/docs`
|
|
|
|
## Docker Compose
|
|
|
|
For deployment to your own server, see the [Docker Compose deployment guide](./deployment-docker-compose.md).
|
|
|
|
## GitHub Repository Automation
|
|
|
|
Install the following GitHub Apps to enable the included repository automation:
|
|
|
|
* [Latest Changes](https://github.com/apps/latest-changes) updates `release-notes.md` when a pull request is merged.
|
|
* [PR Push](https://github.com/apps/pr-push) lets the pre-commit workflow push automated fixes to pull request branches.
|
|
* [PR Submit](https://github.com/apps/pr-submit) lets the **Bump pre-commit hooks** and **Prepare Release** workflows create pull requests.
|
|
|
|
To publish code coverage with [Smokeshow](https://github.com/samuelcolvin/smokeshow), add `SMOKESHOW_AUTH_KEY` as a repository secret.
|