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>
This commit is contained in:
50
fly.toml
Normal file
50
fly.toml
Normal file
@@ -0,0 +1,50 @@
|
||||
# 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"
|
||||
Reference in New Issue
Block a user