docker-workflows について
docker-workflowsは、DockerfileやCompose環境を作成する開発者向けのスキルです。Python/UVのコンテナ化を含め、ビルド、セキュリティ、デバッグの指針をまとめています。
主な機能
- 01DockerfileとComposeの設定ガイド
- 02Python/UVのコンテナ例
- 03マルチステージビルドのパターン
- 04シークレットとボリュームの管理
- 05コンテナのデバッグコマンド
活用シーン
- 01Python/UVアプリのコンテナ化
- 02アプリとデータベース環境の構築
- 03本番用マルチステージイメージの準備
- 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 の統合
コメント
Markdown 対応