From elixir-phoenix
Provides Elixir/Phoenix deployment patterns including runtime.exs for env vars/secrets, Dockerfile, fly.toml, mix releases, rel/ overlays, health checks. Use for Fly.io, Docker, CI/CD, migrations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/elixir-phoenix:deployThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Quick reference for deploying Elixir/Phoenix applications.
Quick reference for deploying Elixir/Phoenix applications.
config.exs get baked into the release binary. Use runtime.exs with env vars so secrets are resolved at bootverify: :verify_peer allows MITM attacks between your app and database; production data traverses the connectionif config_env() == :prod do
database_url = System.get_env("DATABASE_URL") || raise "DATABASE_URL is required"
secret_key_base = System.get_env("SECRET_KEY_BASE") || raise "SECRET_KEY_BASE is required"
host = System.get_env("PHX_HOST") || raise "PHX_HOST is required"
config :my_app, MyApp.Repo,
url: database_url,
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"),
ssl: true,
ssl_opts: [verify: :verify_peer]
config :my_app, MyAppWeb.Endpoint,
url: [host: host, port: 443, scheme: "https"],
http: [ip: {0, 0, 0, 0}, port: String.to_integer(System.get_env("PORT") || "4000")],
secret_key_base: secret_key_base,
server: true
end
def call(%{path_info: ["health", "readiness"]} = conn, _opts) do
case Ecto.Adapters.SQL.query(MyApp.Repo, "SELECT 1", []) do
{:ok, _} -> send_resp(conn, 200, ~s({"status":"ok"})) |> halt()
{:error, _} -> send_resp(conn, 503, ~s({"status":"error"})) |> halt()
end
end
| Need | Use |
|---|---|
| Simple, managed | Fly.io |
| Enterprise, existing K8s | Kubernetes |
| Custom infrastructure | Docker + your orchestrator |
| Resource | Recommendation |
|---|---|
| CPU | NO LIMITS (BEAM scheduler issues) |
| Memory | Set limits (256Mi-512Mi typical) |
| Graceful shutdown | ≥ 60 seconds |
server: true in endpoint configPhoenix 1.8 uses esbuild + tailwind (no Node.js required):
config/config.exs under :esbuild and :tailwindmix assets.deploy builds for productionmix assets.setup installs binaries on first runconfig/config.exsFor detailed patterns, see:
${CLAUDE_SKILL_DIR}/references/docker-config.md - Multi-stage Dockerfile, best practices${CLAUDE_SKILL_DIR}/references/flyio-config.md - fly.toml, clustering, commandsnpx claudepluginhub oliver-kriska/claude-elixir-phoenix --plugin elixir-phoenixPrevents Phoenix deployment failures with 7 rules on runtime.exs env vars, release migrations, PHX_HOST, assets.deploy, secrets, health endpoint, logger config. Invoke before config/rel/Dockerfile changes.
Guides Elixir app configuration distinguishing runtime vs compile-time settings using config.exs/runtime.exs, Application.get_env, and env-specific files for apps, releases, libraries.
Guides Elixir application configuration, covering runtime vs compile-time settings, config.exs, runtime.exs, and Application.get_env.