Skip to main content

docker-workflows

Create Dockerfiles, docker-compose configurations, and container workflows for Python projects with UV. Use when containerizing applications, setting up development environments, or deploying with Docker.

Aller à l'installation

Informations de source

Dépôt
AutumnsGrove/Lattice
Dernière activité de la source
25 décembre 2025 à 17:12
Langue détectée de SKILL.md
anglais
Étoiles
6
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
docker-workflows
description
Create Dockerfiles, docker-compose configurations, and container workflows for Python projects with UV. Use when containerizing applications, setting up development environments, or deploying with Docker.
# Docker Workflows Skill ## When to Activate Activate this skill when: - Creating Dockerfiles for applications - Setting up docker-compose environments - Containerizing Python/UV projects - Configuring multi-stage builds - Managing container secrets ## Quick Commands ```bash # 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 ``` ## Basic Dockerfile (Python/UV) ```dockerfile 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"] ``` ## Multi-Stage Build (Production) ```dockerfile # 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 (App + Database) ```yaml 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 Commands ```bash # 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 ``` ## Layer Caching Best Practice ```dockerfile # 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 ``` ## Security Essentials ```dockerfile # 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 ``` ## Runtime Secrets ```bash # 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 ``` ## Volume Types ```bash # 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 ``` ## Debugging ```bash # 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 ``` ## Common Issues ### Container exits immediately ```bash docker logs container_name # Check for errors docker run -it app:v1 bash # Debug interactively ``` ### Can't connect to container ```bash docker ps # Check port mapping docker inspect container_name # Check network config ``` ### Out of disk space ```bash docker system df # Check usage docker system prune -a # Clean everything ``` ## Related Resources See `AgentUsage/docker_guide.md` for complete documentation including: - Advanced multi-stage patterns - Docker Compose variations - Production optimization - CI/CD integration
Voir sur GitHub