Builds and deploys Docker containers on Render—Dockerfiles, multi-stage builds, Blueprint Docker fields, private registries, layer caching, and platform constraints. Use when the user mentions Docker, Dockerfile, container images, multi-stage builds, container registry, GHCR, ECR, BuildKit, dockerContext, runtime docker or image, or optimizing Docker builds on Render.
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Render uses BuildKit for Docker builds. All compute service types that support custom runtimes can use runtime: docker (build from a Dockerfile in the repo) or runtime: image (pull a prebuilt image; no Dockerfile build on Render). Deeper patterns and copy-paste templates live under references/.
runtime: docker vs runtime: image in a BlueprintFor full Blueprint authoring, see render-blueprints. For end-to-end deploy flows, see render-deploy.
runtime: docker: Render builds an image from your repo using dockerfilePath, dockerContext, and optional dockerCommand (overrides image CMD).runtime: image: Render pulls image.url; no repo-based image build. Pair with registryCredential when the registry is private.| Field | Role |
|---|---|
dockerfilePath | Path to the Dockerfile (default ./Dockerfile) |
dockerContext | Build context directory (what is sent to the daemon) |
dockerCommand | Overrides the container CMD after the image is built |
image.url | Image reference for runtime: image (registry/repo:tag or digest) |
registryCredential | Auth for private pulls; often fromRegistryCreds → Dashboard-stored credential |
Example sketch (values illustrative):
services:
- type: web
name: api
runtime: docker
region: oregon
plan: starter
dockerfilePath: ./Dockerfile
dockerContext: .
dockerCommand: node server.js
envVars:
- key: PORT
value: 10000For runtime: image, set image.url and, if needed, registryCredential per Registry Configuration below.
Recommended for production. Use a builder stage for compilation and dependency installation, and a minimal runner stage that only copies artifacts and runtime files. Benefits:
See references/dockerfile-patterns.md for language-specific templates.
Critical: Never pass secrets via ARG. Build arguments are stored in image layers and can be recovered from the image history or intermediate layers.
RUN --mount=type=secret,...) rather than ARG.Treat anything sensitive as runtime or BuildKit secret mount, not as a build arg.
Private base images (for runtime: docker) or prebuilt images (runtime: image) need authentication:
registryCredential.fromRegistryCreds.name (match the Dashboard name).Supports common registries (Docker Hub, GHCR, ECR, Google Artifact Registry, and others). Step-by-step per provider: references/registry-setup.md.
Prebuilt image services do not auto-deploy when the tag moves in the registry; trigger a manual redeploy or use a deploy hook when you publish a new image.
references/optimization-guide.md).latest can resolve to stale cached images. Prefer immutable references: digest (repo/image@sha256:...) or version pins (v1.2.3).0.0.0.0:$PORT (Render sets PORT).healthCheckPath, etc.)./etc/secrets/ — do not rely on repo-root secret paths inside the container unless you copy or mount them explicitly in the image..dockerignore and Start Commands.dockerignore that excludes node_modules, .git, .env, build artifacts, logs, and OS junk. This shrinks context upload time and avoids leaking local files into layers. Lists and rationale: references/optimization-guide.md./bin/sh -c 'set -e; ./migrate && exec node server.js' (prefer exec so your app receives signals for graceful shutdown).| Document | Contents |
|---|---|
references/dockerfile-patterns.md | Multi-stage templates (Node, Python, Go, Ruby, Rust, static sites) |
references/registry-setup.md | Docker Hub, GHCR, ECR, Artifact Registry + Blueprint wiring |
references/optimization-guide.md | Layer order, .dockerignore, BuildKit cache mounts, debugging |
render.yaml schema, wiring, and validation11c74d6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.