Files
supabase/apps/temp-docs/docs/guides/hosting/docker.mdx
2022-05-30 14:52:54 +08:00

90 lines
2.5 KiB
Plaintext

---
id: docker
title: With Docker
description: How to use configure and deploy Supabase.
---
Docker is the easiest way to get started with self-hosted Supabase.
## Before you begin
You need the following installed in your system:
- [Docker](https://docs.docker.com/engine/install/) and docker-compose
- [Git](https://git-scm.com/downloads)
## Getting started
### Get the code
Checkout the docker directory in the Supabase repo:
```sh
git clone --depth 1 https://github.com/supabase/supabase
cd supabase/docker
```
### Manage Secrets
Copy `.env.example` to `.env` and populate the values.
```sh
cp .env.example .env
```
In particular, these are required:
- `POSTGRES_PASSWORD`: the password for the `postgres` role
- `JWT_SECRET`: used by PostgREST and GoTrue, among others
- `SITE_URL`: the base URL of your site
- `SMTP_*`: mail server credentials
### Generate API Keys
Use your `JWT_SECRET` to generate a `anon` and `service` API keys using the [JWT generator](/docs/guides/hosting/overview#api-keys).
Replace the values in these files:
- `docker-compose.yml`:
- `ANON_KEY` - replace with an `anon` key
- `SERVICE_KEY` - replace with a `service` key
- `volumes/kong.yml`
- `anon` - replace with an `anon` key
- `service_role` - replace with a `service` key
### Start
You can now start Supabase:
```sh
docker-compose up
```
Your database will be persisted in `volumes/db/data`, and your storage objects in `volumes/storage`.
Try out the examples in `supabase/examples` to verify if it works correctly!
## Configuration
To keep the setup simple, we made some choices that may not be optimal for production:
- the database is in the same machine as the servers
- the storage uses the filesystem backend instead of S3
We strongly [recommend](/docs/guides/hosting/overview#managing-your-database) that you decouple your database
before deploying.
Each system can be [configured](/docs/guides/hosting/overview#configuration) to suit your particular use-case.
## Deploying
See the following guides to deploy Docker Compose setup using your preferred tool and platform:
- [Docker Swarm](https://docs.docker.com/engine/swarm/stack-deploy/)
- [AWS Fargate](https://aws.amazon.com/blogs/containers/deploy-applications-on-amazon-ecs-using-docker-compose/)
- [Using Kompose for Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/translate-compose-kubernetes/)
## Next steps
- Got a question? [Ask here](https://github.com/supabase/supabase/discussions).
- Sign in: [app.supabase.com](https://app.supabase.com)