1.8 KiB
1.8 KiB
Deployment
Platforms
Kubernetes (ArgoCD)
Primary production deployment target. Manifests in k8s/.
Fly.io
Alternative deployment option. Configuration in fly.toml.
Docker
Multi-stage Docker build (Dockerfile).
- Build stage: Elixir compilation + asset bundling
- Release stage: Minimal runtime with Erlang/Elixir release
Release Management
Building
MIX_ENV=prod mix assets.deploy
mix release
Database Migrations
Aprsme.Release module handles migrations during release startup.
Environment Configuration
Configuration files in config/:
config.exs— Base configurationdev.exs— Development overridesprod.exs— Production defaultsruntime.exs— Runtime configuration (from env vars)
Key Environment Variables
Development Environment
Nix Shell
Nix-based reproducible dev environment via flake.nix / shell.nix. Provides Elixir, Erlang, PostgreSQL, and all tooling.
Dev Containers
.devcontainer/ configuration for VS Code / GitHub Codespaces.
Clustering
Optional multi-node deployment via libcluster:
- Leader election determines which node maintains APRS-IS connection
- Packet distribution relayed across nodes
- Configuration in cluster modules under
lib/aprsme/cluster/
Health Checks
/health— Kubernetes liveness (basic) and readiness (DB + PubSub, shutdown-aware)/ready— App readiness check/status.json— JSON status endpoint
Handled by HealthCheck plug before router.