Docker Compose umožňuje definovat a spouštět multi-kontejnerové aplikace jedním příkazem. Praktický průvodce od development setupu po integrační testy.
Od Dockerfilu k celé aplikaci¶
Docker vyřešil problém „works on my machine“ pro jednotlivé kontejnery. Docker Compose jde dál — definuje celou aplikační stack v jednom YAML souboru. Web server, databáze, cache, message broker — vše spuštěné jedním docker-compose up.
Compose je klíčový nástroj pro lokální vývoj a CI/CD pipeline. Každý vývojář dostane identické prostředí během sekund.
Anatomie docker-compose.yml¶
Typická webová aplikace v Compose:
version: '2'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./src:/app/src
depends_on:
- db
- redis
environment:
DATABASE_URL: postgres://user:pass@db:5432/app
db:
image: postgres:9.5
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:3-alpine
volumes:
pgdata:
Services, networks a volumes — tři pilíře Compose konfigurace.
Development workflow s Compose¶
Compose transformuje onboarding nových vývojářů:
git clone+docker-compose up= funkční prostředí- Hot reload přes bind mounts (
volumes) - Izolované databáze — žádné konflikty mezi projekty
docker-compose run web pytestpro testy ve stejném prostředí
Pro CI/CD pipeline stačí docker-compose -f docker-compose.test.yml up --abort-on-container-exit pro spuštění integračních testů.
Best practices a tipy¶
Několik ověřených pravidel:
- Používejte
.envsoubor pro environment proměnné - Definujte health checks pro spolehlivé
depends\_on - Oddělte produkční a vývojové override soubory (
docker-compose.override.yml) - Pojmenujte volumes pro persistenci dat mezi restarty
- Využijte
docker-compose logs -f service\_namepro debugging
Závěr: standard pro lokální vývoj¶
Docker Compose se stává de facto standardem pro lokální vývojová prostředí. Eliminuje „works on my machine“ problémy, zrychluje onboarding a zajišťuje konzistenci mezi vývojem a produkcí. Každý projekt by měl mít svůj docker-compose.yml.