nodefony-devops

Guides deployment of Nodefony applications using generated Docker, Compose, and Kubernetes templates.

Updated Dec 19, 2023
One-click install
npx skills add https://github.com/nodefony/nodefony-core --skill nodefony-devops-nodefony
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: nodefony-devops
Source: https://github.com/nodefony/nodefony-core/tree/main/.claude/skills/nodefony-devops
Command: npx skills add https://github.com/nodefony/nodefony-core --skill nodefony-devops-nodefony

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Deploying a Nodefony application requires knowing exactly what the framework's generator already produces (Dockerfile, Compose file, Kubernetes manifests, CI pipelines) and grounding every orchestration decision in authoritative Docker, Kubernetes, Podman, and OCI documentation rather than guesswork. ## Core Features & Use Cases - Generator Template Map: Catalogs every deployment artifact the Nodefony scaffold renders (Dockerfile.tpl, compose.yaml.tpl, GitHub/GitLab CI templates, migrate-job.yaml.tpl) and the it.db branching variable that decides database topology and replica count. - Offline Reference Corpus: Ships 24 frozen offline pages (~1.3 MB) covering Docker builds, multi-stage builds, Compose, Kubernetes probes, resources, Pod Security Standards, pod lifecycle, Podman/Buildah, distroless, and OCI, citable as file:line. - Framework Capability Anchors: Documents built-in health probes (/livez, /readyz), graceful shutdown drain (15s), _FILE secret suffix, and non-root user (1000:1000) with exact source-code line references. - Use Case: Before editing a generated Kubernetes manifest, consult the corpus to confirm that a missing seccomp profile violates the Restricted policy, or verify locally with a disposable kind cluster and podman kube play. ## Quick Start Ask the assistant to review the generated Dockerfile and Kubernetes manifests for my Nodefony application against the offline Docker and Kubernetes reference corpus.

Frequently Asked Questions about nodefony-devops

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I deploy a Nodefony application with Docker and Kubernetes?

Start from what the Nodefony generator already renders: a Dockerfile template, Compose file, CI workflows, and Kubernetes manifests including a migrate job. Inspect the image's built-in capabilities first, such as /livez and /readyz probes and a 15-second shutdown drain, before writing any custom YAML.

What deployment files does the Nodefony scaffold generator produce?

The base preset renders Dockerfile.tpl plus GitHub and GitLab CI templates; the complete preset adds compose.yaml.tpl, a production workflow, and a migrate-job.yaml.tpl. The it.db template variable decides whether a server database exists, which controls replica count.

Can I test Kubernetes manifests locally without a cluster?

Yes, use `podman kube play deploy/` to run manifests without a cluster, or create a disposable kind cluster with `kind create cluster` and apply the Restricted pod-security label. Note that Podman does not replay admission policies, Ingress, or rollouts.

Why does my Nodefony pod stay Pending during a rolling update with sqlite?

A sqlite database forces a single replica and a Recreate strategy. A RollingUpdate on a ReadWriteOnce volume waits for a disk the old pod still holds, leaving the deployment Pending forever without an error naming the cause.

Why do secure cookies fail behind a TLS-terminating reverse proxy?

Behind a proxy terminating TLS, the app receives plain HTTP with an X-Forwarded-Proto header. Without trustProxy set, the detected scheme is http and __Host- cookies silently fail; set trustProxy in the manifest.

What does exit code 137 mean when stopping a Nodefony container?

Exit code 137 means the container was killed, so graceful shutdown did not occur; the only acceptable verdict is 0. For example, `podman stop` defaults to 10 seconds, below the framework's 15-second drain, so in-flight requests are lost unless the timeout is raised.