Docker Compose

  • Why: configure relationships between containes

  • Why: save our docker container run settings in easy-to-read file

  • Why: create one-liner developer environment startups

  • Comprised of 2 seperate but related things

    1. YAML-formatted file that describes our solution options for:

      • containers

      • networks

      • volumes

    2. A CLI tool docker-compose used for local dev/test automation with those YAML files

docker-compose.yml

  • Compose YAML format has it’s own versions: 1, 2, 2.1, 3, 3.1

  • YAML file can be used with docker-compose command for local docker automation or…

  • With docker directly in production with Swarm (as of v1.13)

  • docker-compose –help

  • docker-compose.yml is default filename, but any can be used with docker-compose -f

docker-compose CLI

  • CLI tool comes with Docker for WIndows/Mac, but separate download for Linux

  • Not a production-grade tool but ideal for local development and test

  • Two most common commands are

    • docker-compose up - setup volumes/networks and start all containers

    • docker-compose down - stop all containers and remove cont/vol/net

  • If all your projects had a Dockerfile and docker-compose.yml then “new developer onboarding” would be:

    • git clone github.com/some/software

    • docker-compose up

Use Compose to Build

  • Compose can also build your custom images

  • WIll build them with docker-compose up if not found in cache

  • Also rebuild with docker-compose build

  • Great for complex builds that have lots of vars or build args