Zurück zu Fähigkeiten

create-dockerfile

pjt222
Aktualisiert Yesterday
2 Ansichten
17
2
17
Auf GitHub ansehen
Metaaidesign

Über

Diese Claude-Skill erstellt produktionsreife Dockerfiles für Node.js-, Python-, Go-, Rust- und Java-Anwendungen. Sie behandelt Kernaspekte wie Basis-Images, Abhängigkeiten, Berechtigungen und die .dockerignore-Datei. Nutzen Sie sie, wenn Sie ein Projekt erstmals containerisieren oder eine App für einen konsistenten Einsatz in Cloud- oder Docker-Compose-Umgebungen vorbereiten.

Schnellinstallation

Claude Code

Empfohlen
Primär
npx skills add pjt222/agent-almanac -a claude-code
Plugin-BefehlAlternativ
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativ
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-dockerfile

Kopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren

Dokumentation

建 Dockerfile

為通用應用建可產之 Dockerfile。

用時

  • 將 Node.js、Python、Go、Rust、Java 應用入容器
  • 建一致之建/運境
  • 備應用為雲布或 Docker Compose
  • 項目無現 Dockerfile

  • 必要:項目語與入點(如 npm startpython app.py
  • 必要:依清單(package.json、requirements.txt、go.mod、Cargo.toml、pom.xml)
  • 可選:目標境(開發或生產)
  • 可選:暴露之埠

第一步:擇基像

開發像產像
Node.jsnode:22-bookwormnode:22-bookworm-slim~200MB
Pythonpython:3.12-bookwormpython:3.12-slim-bookworm~150MB
Gogolang:1.23-bookwormgcr.io/distroless/static~2MB
Rustrust:1.82-bookwormdebian:bookworm-slim~80MB
Javaeclipse-temurin:21-jdkeclipse-temurin:21-jre~200MB

得: 為產像擇 slim/distroless 變。

第二步:書 Dockerfile(按語)

Node.js

FROM node:22-bookworm-slim

RUN groupadd -r appuser && useradd -r -g appuser -m appuser

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci --omit=dev

COPY . .

USER appuser
EXPOSE 3000
CMD ["node", "src/index.js"]

Python

FROM python:3.12-slim-bookworm

RUN groupadd -r appuser && useradd -r -g appuser -m appuser

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

USER appuser
EXPOSE 8000
CMD ["python", "app.py"]

Go

FROM golang:1.23-bookworm AS builder

WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /app/server ./cmd/server

FROM gcr.io/distroless/static
COPY --from=builder /app/server /server
EXPOSE 8080
ENTRYPOINT ["/server"]

Rust

FROM rust:1.82-bookworm AS builder

WORKDIR /src
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && echo "fn main() {}" > src/main.rs && cargo build --release && rm -rf src

COPY . .
RUN touch src/main.rs && cargo build --release

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /src/target/release/myapp /usr/local/bin/myapp
EXPOSE 8080
ENTRYPOINT ["myapp"]

Java (Maven)

FROM eclipse-temurin:21-jdk AS builder

WORKDIR /src
COPY pom.xml .
RUN mvn dependency:go-offline -B
COPY src ./src
RUN mvn package -DskipTests

FROM eclipse-temurin:21-jre
COPY --from=builder /src/target/*.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

得: docker build -t myapp . 無訛而畢。

敗則: 察基像之可得與依裝命令。

第三步:ENTRYPOINT 對 CMD

指令覆蓋
ENTRYPOINT定執--entrypoint
CMD默參以尾參覆
二者ENTRYPOINT + CMD 之默參參唯覆 CMD

ENTRYPOINT 用於有單一志之編譯二進。CMD 用於解釋語,或欲 docker run myapp bash 者。

第四步:建 .dockerignore

.git
.gitignore
node_modules
__pycache__
*.pyc
target/
.env
.env.*
*.md
!README.md
.vscode
.idea
Dockerfile
docker-compose*.yml

得: 建脈排開發之物。

第五步:增非根用者

產境宜以非根運:

RUN groupadd -r appuser && useradd -r -g appuser -m appuser
USER appuser

distroless 像用內置之 nonroot:

FROM gcr.io/distroless/static:nonroot
USER nonroot

第六步:建而驗

docker build -t myapp:latest .
docker run --rm myapp:latest
docker image inspect myapp:latest --format '{{.Size}}'

得: 容器起,於期埠應,以非根運。

敗則:docker logs 察誌。驗 WORKDIR、COPY 路、暴露之埠。

  • docker build 無訛而畢
  • 容器起而應用應
  • .dockerignore 排無謂之文件
  • 應用以非根運
  • 依先於源碼複(緩存有效)
  • 無密或 .env 烤入像

  • 依裝前 COPY:每改碼則廢依緩。宜先複清單文件。
  • 以根運:Docker 默為根。產境宜增非根用者。
  • 缺 .dockerignore:將 node_modules.git 送入建脈費時費盤。
  • 基像用 latest:宜釘特版(如 node:22.11.0)以重現。
  • --no-cache-dir:Python pip 默緩存包,脹像。
  • ADD 對 COPY:除非需 URL 下載或 tar 解壓(ADD 自解),宜用 COPY

  • create-r-dockerfile — R 專用 Dockerfile,用 rocker 像
  • create-multistage-dockerfile — 多階段之法以最小產像
  • optimize-docker-build-cache — 進階緩之策
  • setup-compose-stack — 以他服協已容器化之應

GitHub Repository

pjt222/agent-almanac
Pfad: i18n/wenyan/skills/create-dockerfile
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Verwandte Skills

content-collections

Meta

Diese Skill bietet eine produktionsgetestete Einrichtung für Content Collections – ein TypeScript-first-Tool, das Markdown/MDX-Dateien in typsichere Datensammlungen mit Zod-Validierung umwandelt. Verwenden Sie ihn beim Erstellen von Blogs, Dokumentationsseiten oder inhaltsstarken Vite + React-Anwendungen, um Typsicherheit und automatische Inhaltsvalidierung zu gewährleisten. Er behandelt alles von der Vite-Plugin-Konfiguration und MDX-Kompilierung bis hin zur Deployment-Optimierung und Schema-Validierung.

Skill ansehen

polymarket

Meta

Diese Fähigkeit ermöglicht es Entwicklern, Anwendungen mit der Polymarket-Prognosemärkte-Plattform zu erstellen, einschließlich API-Integration für Handel und Marktdaten. Sie bietet außerdem Echtzeit-Datenstreaming über WebSocket, um Live-Trades und Marktaktivitäten zu überwachen. Nutzen Sie sie zur Implementierung von Handelsstrategien oder zur Erstellung von Tools, die Live-Marktaktualisierungen verarbeiten.

Skill ansehen

creating-opencode-plugins

Meta

Diese Fähigkeit unterstützt Entwickler dabei, OpenCode-Plugins zu erstellen, die in über 25 Ereignistypen wie Befehle, Dateien und LSP-Operationen eingreifen. Sie bietet die Plugin-Struktur, Event-API-Spezifikationen und Implementierungsmuster für JavaScript/TypeScript-Module. Nutzen Sie sie, wenn Sie den Lebenszyklus des OpenCode KI-Assistenten mit benutzerdefinierter ereignisgesteuerter Logik abfangen, überwachen oder erweitern müssen.

Skill ansehen

sglang

Meta

SGLang ist ein hochperformantes LLM-Serving-Framework, das sich auf schnelle, strukturierte Generierung für JSON, Regex und agentenbasierte Workflows unter Verwendung seines RadixAttention-Prefix-Cachings spezialisiert. Es bietet deutlich schnellere Inferenz, insbesondere für Aufgaben mit wiederholten Präfixen, was es ideal für komplexe, strukturierte Ausgaben und Mehrfachdialoge macht. Wählen Sie SGLang gegenüber Alternativen wie vLLM, wenn Sie constrained decoding benötigen oder Anwendungen mit umfangreicher Präfix-Weitergabe entwickeln.

Skill ansehen