Skip to content

Podstawowe informacje o Docker Compose

Docker Compose jest to narzędzie umożliwiające zarządzanie i definiowanie wielu kontenerów z poziomu jednego pliku yaml. Umożliwia tworzenie nowych kontenerów, łączących je sieci, a także automatyzowaniem monitorowania ich stanu (health checki) oraz ich skalowania.

Możliwe jest także kolejność uruchamiania kontenerów.

Wersja 1 docker compose

Przykładowe użycie:

services:
    redis:
      image: redis

    db:
      image: postgres:9.4

    vote:
      image: voting-app
      ports:
        - 5000:80
      links:
        - redis

Poprzez wpis image wybierany jest kontener spośród istniejących lokalnie lub w repozytoriach kontenerów.

Jeżeli chcemy zbudować jakiś podczas uruchamiania procesu docker-compose należy zamienić image na build i podać do pliku typu Dockerfile ścieżkę.

Przykład takiej operacji:

redis:
    image: redis

db:
    build: ./database
    ports:
        - 5000:80
    links:
        - redis

Wersja 2 oraz 3 docker compose

Najnowsza wersja docker compose jest w wersji 3. Względem tej pierwszej wprowadzono wiele zmian: - konieczne podanie wersji docker compose na początku pliku

version: 2
services:
...

  • wszystko umieszczone w sekcji services:

    services:
      redis:
        image: redis
      db:
        image: postgres:9.4
      vote:
        image: voting-app
        ports:
          - 5000:80
      result:
        build: ./result-app
        ports:
          - 5001:80
      worker:
        image: worker
        links:
          - redis
    

  • kolejność uruchamiania kontenerów (np. jeden po drugim, gdy coś zrobi)

    version: '2'
    services:
      redis:
        image: redis
      db:
        image: postgres:9.4
      vote:
        image: voting-app
        ports:
          - 5000:80
        depends_on: # w zależności 
          - redis   # od kontenera redis
    

  • tworzenie networków, początkowo (w wersji 1) wszystkie kontenery w jednym bridge'u, w wersji 2 wprowadzono nową sieć dla nowo tworzonych kontenerów w ramach tworzenia serwisu

    version: 3
    services:
      redis:
        image: redis
        networks:       # przypisanie sieci
          - front-end   # do kontenera 
      db:
        image: postgres:9.4
        networks:
          - front-end
    
      vote:
        image: voting-app
        ports:
          - 5000:80
        depends_on: # w zależności od działania
          - redis   # kontenera redis
        networks:
          - front-end
          - back-end    
    
    networks:     # utworzenie nowych sieci
      front-end:
      back-end:
    

  • w wersji 3 istnieje wsparcie Docker Swarm