Skip to content
BEAD

Dockerfile Starter

Multi-stage Dockerfiles for Node, Python, PHP, Go, Ruby, Rust, Java, and static sites — plus matching .dockerignore.

Dockerfile
FROM node:22-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev

FROM node:22-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
COPY --from=deps /app/node_modules ./node_modules
COPY . .
USER node
EXPOSE 3000
CMD ["node", "server.js"]
.dockerignore
.git
.gitignore
.dockerignore
README.md
LICENSE
.env
.env.*
node_modules
__pycache__
.venv
target
dist
build
*.log
</>Use this tool programmaticallycurl · JavaScript · MCP

Same tool, callable from any HTTP client or from Claude (via MCP). Anonymous: 100 req/day per IP. Sign up for 1,000 req/day.

curl
curl https://api.b-e-a-d.com/tools/dockerfile-starter/run \
  -H "Content-Type: application/json" \
  -d '{
  "template": "node-alpine",
  "workdir": "/app"
}'
JavaScript (fetch)
const res = await fetch("https://api.b-e-a-d.com/tools/dockerfile-starter/run", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
  "template": "node-alpine",
  "workdir": "/app"
}),
});
const data = await res.json();
console.log(data.result);
MCP (Claude Desktop / Claude Code)
# In Claude Desktop / Claude Code, add to your MCP config:
{
  "mcpServers": {
    "bead": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.b-e-a-d.com"]
    }
  }
}

# Then ask Claude to call:
mcp__bead__bead_dockerfile_starter

Full reference: developer docs · OpenAPI spec

Multi-stage by default

Every template separates build and runtime stages — smaller final images, no toolchains shipped to production. Templates land in the non-root user where the runtime base supports it.

Edit before shipping

These are starters, not finished products. Pin specific image digests for reproducible builds, configure your real port and entrypoint, and add a healthcheck.

You might also like