simpleshop_theme/fly.toml
jamey 1ee37c853d add Docker deployment with Alpine image, release config and health check
- Alpine multi-stage Dockerfile (131 MB image)
- Release overlays (bin/server, bin/migrate), env.sh, Release module
- Health check endpoint at GET /health
- Fly.io config with SQLite volume mount
- Fix hardcoded paths in optimizer.ex and variant_cache.ex to use
  Application.app_dir/2 (breaks in releases where Plug.Static serves
  from a different directory than CWD)
- strip_beams: true in release config
- Optimised .dockerignore and .gitignore for mockup variants

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:21:05 +00:00

51 lines
1.2 KiB
TOML

# fly.toml — Fly.io deployment configuration
#
# Getting started:
# 1. Install flyctl: curl -L https://fly.io/install.sh | sh
# 2. Sign up / log in: fly auth login
# 3. Create the app: fly launch --no-deploy
# 4. Create a volume: fly volumes create simpleshop_data --size 1
# 5. Set secrets:
# fly secrets set SECRET_KEY_BASE=$(mix phx.gen.secret)
# fly secrets set PHX_HOST=your-domain.com
# 6. Deploy: fly deploy
# 7. Open: fly open
app = "simpleshop-theme"
primary_region = "lhr"
[build]
dockerfile = "Dockerfile"
# SQLite needs a persistent volume — without this, your database is lost on every deploy.
[mounts]
source = "simpleshop_data"
destination = "/data"
[env]
PHX_SERVER = "true"
DATABASE_PATH = "/data/simpleshop_theme.db"
[http_service]
internal_port = 4000
force_https = true
auto_stop_machines = "stop"
auto_start_machines = true
min_machines_running = 0
[http_service.concurrency]
type = "connections"
hard_limit = 1000
soft_limit = 1000
[[http_service.checks]]
grace_period = "30s"
interval = "15s"
method = "GET"
timeout = "5s"
path = "/health"
[[vm]]
size = "shared-cpu-1x"
memory = "1gb"