スキル一覧に戻る

create-dockerfile

pjt222
更新日 6 days ago
12 閲覧
17
2
17
GitHubで表示
メタaidesign

について

このClaudeスキルは、Node.js、Python、Go、Rust、Javaプロジェクト向けのDockerfileを生成し、ベースイメージ、依存関係、設定を扱います。アプリケーションを初めてコンテナ化する場合や、クラウドデプロイの準備時に使用することで、一貫したビルドおよびランタイム環境を確保できます。ユーザー権限、COPYパターン、ENTRYPOINTとCMDの違いなど、重要なプラクティスをカバーしています。

クイックインストール

Claude Code

推奨
メイン
npx skills add pjt222/agent-almanac -a claude-code
プラグインコマンド代替
/plugin add https://github.com/pjt222/agent-almanac
Git クローン代替
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-dockerfile

このコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします

ドキュメント

造 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。解譯語可欲 docker run myapp bash 則用 CMD

四:建 .dockerignore

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

得: 構脈除發餘。

五:加非 root 用

產時恆行為非 root:

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}}'

得: 容器起、應於期口、非 root 行。

敗:docker logs 察誌。驗 WORKDIR、COPY 路、露口。

  • docker build 無誤畢
  • 容器起應
  • .dockerignore 除餘檔
  • 應為非 root 行
  • 依先複於源(快效)
  • 密或 .env 不入像

  • COPY 先於依裝:碼每變必失依快。先複備
  • 為 root 行:默 Docker 用為 root。產必加非 root
  • 缺 .dockerignorenode_modules.git 入構脈費時費碟
  • 基像用 latest:釘定版(如 node:22.11.0)為重現
  • --no-cache-dir:Python pip 默快包、脹像
  • ADD 與 COPY:用 COPY 除需 URL 下或 tar 解(ADD 自解)

  • create-r-dockerfile - R 專 Dockerfile 用 rocker 像
  • create-multistage-dockerfile - 多段模為最小產像
  • optimize-docker-build-cache - 進快策
  • setup-compose-stack - 以他服調容器化應

GitHub リポジトリ

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

関連スキル

content-collections

メタ

このスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。

スキルを見る

polymarket

メタ

このスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。

スキルを見る

creating-opencode-plugins

メタ

このスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。

スキルを見る

sglang

メタ

SGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。

スキルを見る