
* docker-example overhaul Update docker-example with a more realistic multi-compose deployment, and also a more simplistic single-image deploy. * Use `uv` for faster bootstrapping * Separate simple and production-ready docker files * Split compose.yaml into 3 parts * Persist sqlite db and tls keys * Include postgres and redis * Include Adminer and redis-commander for adminstration * Suppose upload persistence * Update documentation * Update Caddyfile for compatibility with new Upload API * Simple Dockerfile: keep `reflex export --frontend-only` Pre-pack the resulting image with npm dependencies to reduce startup time * Simplify simple docker file to just use pip
42 lines
994 B
YAML
42 lines
994 B
YAML
# Base compose file production deployment of reflex app with Caddy webserver
|
|
# providing TLS termination and reverse proxying.
|
|
#
|
|
# See `compose.prod.yaml` for more robust and performant deployment option.
|
|
#
|
|
# During build and run, set environment DOMAIN pointing
|
|
# to publicly accessible domain where app will be hosted
|
|
services:
|
|
app:
|
|
image: local/reflex-app
|
|
environment:
|
|
DB_URL: sqlite:///data/reflex.db
|
|
build:
|
|
context: .
|
|
dockerfile: prod.Dockerfile
|
|
volumes:
|
|
- db-data:/app/data
|
|
- upload-data:/app/uploaded_files
|
|
restart: always
|
|
|
|
webserver:
|
|
environment:
|
|
DOMAIN: ${DOMAIN:-localhost}
|
|
ports:
|
|
- 443:443
|
|
- 80:80 # For acme-challenge via HTTP.
|
|
build:
|
|
context: .
|
|
dockerfile: Caddy.Dockerfile
|
|
volumes:
|
|
- caddy-data:/root/.caddy
|
|
restart: always
|
|
depends_on:
|
|
- app
|
|
|
|
volumes:
|
|
# SQLite data
|
|
db-data:
|
|
# Uploaded files
|
|
upload-data:
|
|
# TLS keys and certificates
|
|
caddy-data: |