Docker Compose

Filename

  • docker-compose.yml: v1 version
  • compose.yml: v2 version (preferred by docker, if both present)

Sample file

  • 2 services, backed by Docker images: webapp and database
  • 1 secret (HTTPS certificate), injected into the frontend
  • 1 configuration (HTTP), injected into the frontend
  • 1 persistent volume, attached to the backend
  • 2 networks
services:
  frontend:
    image: example/webapp
    ports:
      - "443:8043"
    networks:
      - front-tier
      - back-tier
    configs:
      - httpd-config
    secrets:
      - server-certificate
 
  backend:
    image: example/database
    volumes:
      - db-data:/etc/data
    networks:
      - back-tier
 
volumes:
  db-data:
    driver: flocker
    driver_opts:
      size: "10GiB"
 
configs:
  httpd-config:
    external: true
 
secrets:
  server-certificate:
    external: true
 
networks:
  # The presence of these objects is sufficient to define them
  front-tier: {}
  back-tier: {}
  • Architecture
    docker_compose_yml_sample

services

volumes

configs

secrets

networks