mcpField
D
docker-workflows

docker-workflows

github.com/autumnsgroveクラウド・DevOps673 回インストール5 日前に更新
リポジトリ

docker-workflows について

docker-workflowsは、DockerfileやCompose環境を作成する開発者向けのスキルです。Python/UVのコンテナ化を含め、ビルド、セキュリティ、デバッグの指針をまとめています。

主な機能

  1. 01DockerfileとComposeの設定ガイド
  2. 02Python/UVのコンテナ例
  3. 03マルチステージビルドのパターン
  4. 04シークレットとボリュームの管理
  5. 05コンテナのデバッグコマンド

活用シーン

  1. 01Python/UVアプリのコンテナ化
  2. 02アプリとデータベース環境の構築
  3. 03本番用マルチステージイメージの準備
  4. 04コンテナの起動・接続問題の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/autumnsgrove/lattice --skill docker-workflows

インストール後、Claude Code で/docker-workflowsを入力して読み込まれたか確認します。

詳細

Docker ワークフローのスキル

有効にするタイミング

次の場合にこのスキルを有効にします。

  • アプリケーション用の Dockerfile を作成するとき
  • docker-compose 環境をセットアップするとき
  • Python/UV プロジェクトをコンテナ化するとき
  • マルチステージビルドを設定するとき
  • コンテナのシークレットを管理するとき

クイックコマンド

# Build image
docker build -t my-app:latest .

# Run container
docker run -d -p 8000:8000 --name my-app my-app:latest

# View logs
docker logs -f my-app

# Execute in container
docker exec -it my-app bash

# Stop and remove
docker stop my-app && docker rm my-app

# Clean up
docker system prune -a

基本的な Dockerfile(Python/UV)

FROM python:3.11-slim

WORKDIR /app

# Install UV
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

# Copy dependency files (layer caching)
COPY pyproject.toml uv.lock ./

# Install dependencies
RUN uv sync --frozen --no-dev

# Copy application
COPY . .

EXPOSE 8000

CMD ["uv", "run", "python", "main.py"]

マルチステージビルド(本番環境)

# Stage 1: Builder
FROM python:3.11-slim AS builder

WORKDIR /app
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev

COPY . .

# Stage 2: Runtime
FROM python:3.11-slim

WORKDIR /app

# Create non-root user
RUN useradd -m -u 1000 appuser && chown appuser:appuser /app

# Copy from builder
COPY --from=builder /app/.venv /app/.venv
COPY --from=builder /app /app

USER appuser

ENV PATH="/app/.venv/bin:$PATH"

EXPOSE 8000
CMD ["python", "main.py"]

.dockerignore

__pycache__/
*.pyc
.git/
.env
.venv/
venv/
*.log
.DS_Store
.pytest_cache/
tests/
docs/
*.md

Docker Compose(アプリ+データベース)

version: '3.8'

services:
  app:
    build: .
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/myapp
    depends_on:
      - db
    volumes:
      - ./app:/app  # Development: live reload

  db:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=myapp
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  postgres_data:

Compose コマンド

# Start all services
docker-compose up -d

# View logs
docker-compose logs -f app

# Stop services
docker-compose down

# Rebuild and restart
docker-compose up -d --build

# Run command in service
docker-compose exec app bash

# Remove volumes (deletes data!)
docker-compose down -v

レイヤーキャッシュのベストプラクティス

# Good: Dependencies cached separately
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev
COPY . .

# Bad: Cache invalidated on every code change
COPY . .
RUN uv sync --frozen --no-dev

セキュリティの基本

# Use official slim images
FROM python:3.11-slim

# Run as non-root
RUN useradd -m -u 1000 appuser
USER appuser

# Don't include secrets in images
# Use runtime environment variables instead

実行時のシークレット

# Pass via environment
docker run -e API_KEY=secret my-app

# Use env file
docker run --env-file .env.production my-app

# With compose
services:
  app:
    env_file:
      - .env.production

ボリュームの種類

# Named volume (data persistence)
docker run -v postgres_data:/var/lib/postgresql/data postgres

# Bind mount (development)
docker run -v $(pwd)/app:/app my-app

デバッグ

# Interactive shell
docker exec -it container_name bash

# Real-time logs
docker logs -f --tail 100 container_name

# Inspect configuration
docker inspect container_name

# Resource usage
docker stats container_name

# Copy files
docker cp container_name:/app/logs ./logs

よくある問題

コンテナがすぐに終了する
docker logs container_name  # Check for errors
docker run -it app:v1 bash  # Debug interactively
コンテナに接続できない
docker ps                           # Check port mapping
docker inspect container_name       # Check network config
ディスク容量が不足している
docker system df           # Check usage
docker system prune -a     # Clean everything

関連リソース

完全なドキュメントについては、以下を含む AgentUsage/docker_guide.md を参照してください。

  • 高度なマルチステージのパターン
  • Docker Compose のバリエーション
  • 本番環境向けの最適化
  • CI/CD の統合

コメント