Docker Compose Tip #60: Declaring LLMs with the models section

LLMs are now first-class citizens in Compose. The models top-level key lets you declare which models your application needs and wire them into your services, all in the same Compose file. Basic usage Declare a model at the top level, reference it from a service: models: smollm: model: ai/smollm2 services: app: image: myapp models: - smollm When the stack starts, Compose ensures the model is available locally and connects the app service to it. The container receives endpoint information via environment variables. ...

May 8, 2026 · 2 min · 381 words · Guillaume Lours

See you at Devoxx France 2026!

This week, no Docker Compose tips, I’ll be at Devoxx France 2026 at the Palais des Congrès in Paris, from April 22 to April 24. I’m lucky to be on stage three times, with topics ranging from AI agents to a text-based RPG powered by tiny language models, and as you’d expect, containers and Compose are part of the story. Here’s what I’ll be talking about. Wednesday, April 22 — 17:50-18:20 (Tools-in-Action) Vos coding agents en mode YOLO… mais en toute sécurité There’s a term for what happens when you use AI coding agents heavily: permission fatigue. You end up clicking through approval prompts without really reading them. To work around this, tools now offer YOLO modes (trust-all-tools, bypass permissions…) that give agents full autonomy. ...

April 20, 2026 · 3 min · 565 words · Guillaume Lours

Docker Compose Tip #5: Writing Compose files for AI tools

AI tools work better when they understand the setup. Here’s how to document Compose files effectively. Add context with comments Comments help AI understand what each service does: services: # Primary web application serving React frontend # Handles user authentication and API gateway web: image: myapp:latest ports: - "3000:3000" # Public facing port - update in .env for production environment: # Connection string to PostgreSQL - format: postgresql://user:pass@host:5432/db DATABASE_URL: ${DATABASE_URL} # JWT secret for auth - must be at least 256 bits JWT_SECRET: ${JWT_SECRET} depends_on: db: condition: service_healthy # Development only - remove for production volumes: - ./src:/app/src # Hot reload for development # PostgreSQL 15 database with PostGIS extension # Stores user data and geographic information db: image: postgis/postgis:15-3.3 environment: POSTGRES_DB: myapp POSTGRES_PASSWORD: ${DB_PASSWORD} # Never commit actual password volumes: # Initial schema and seed data - ./init.sql:/docker-entrypoint-initdb.d/01-init.sql # Persistent data storage - postgres_data:/var/lib/postgresql/data volumes: postgres_data: # Named volume for database persistence across container restarts File headers For bigger projects, add a header: ...

January 9, 2026 · 3 min · 436 words · Guillaume Lours