LiveSystemy informatyczne

Docker Compose – automatyzacja w zarządzaniu kontenerami

docker

Docker Compose automatyzuje tworzenie i uruchamianie wielu kontenerów. Znacznie upraszcza on pracę i eliminuje błąd ludzki zwłaszcza jeśli musimy uruchomić wiele kontenerów zależnych od siebie.

Docker Compose to opis czynności do wykonania w postaci pliku, który zawiera informacje o obrazach i ich kolejności uruchomienia.

Przypadek

Załóżmy, że mamy dwie aplikacje. Pierwsza aplikacja to API które udostępnia i zapisuje informacje w bazie danych. Druga aplikacja to klient, który pobiera dane z API.

W przypadku ręcznego zarządzania kontenerami musielibyśmy pobrać kontener bazy danych dla aplikacji API, a następnie zbudować obrazy dla aplikacji API oraz klienta – w rezultacie trzy obrazy.

Docker Compose umożliwia zautomatyzowanie całego prcesu.

Realizacja

W pierwszej kolejności należy utworzyć Dockerfile dla aplikacji API:

FROM openjdk:8u201-jdk-alpine3.9
ADD target/springboot-api-docker-0.0.1-SNAPSHOT.jar .
EXPOSE 12121
CMD java -jar springboot-api-docker-0.0.1-SNAPSHOT.jar

A następnie dla aplikacji klienckiej:

FROM openjdk:8u201-jdk-alpine3.9
ADD target/springboot-client-docker-0.0.1-SNAPSHOT.jar .
EXPOSE 12121
CMD java -jar springboot-client-docker-0.0.1-SNAPSHOT.jar

Ostatnim krokiem jest utworzenie pliku docker-compose.yml. Plik ten zawiera informacje dotyczące kontenerów, które przez niego mają zostać uruchomione:

version: '3'                          # wersja docker compose
services:                             # serwisy jakie sa zarządzane przez bierzący docker compose
  api:                                # nazwa serwisu (dowolna, unikalna)
    build: ./springboot-api-docker    # sciezka do pliku Dockerfile dla tego kontenera
    ports:
    - "10101:10101"                   # ustawienie mapowania portu
    depends_on:                       # zaleznosc - do uruchomienia tego serwisu wymagane wecześniejsze uruchomienie serwisu databases
    - databases
  client:
    build: ./springboot-client-docker
    ports:
    - "12121:12121"
    depends_on:
    - api
  databases:
    container_name: 'databases'       # nazwa dla kontenera
    image: mysql                      # obraz bazy danych -> https://hub.docker.com/_/mysql
    environment:                      # zmienne srodowiskowe zgodne z dokumentacją -> https://hub.docker.com/_/mysql
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: animaldb
      MYSQL_USER: user
    ports:
    - "3306:3306"

Uruchomienie

Aby uruchomić wszystkie trzy obrazy należy przejść do katalogu, w którym znajduje się plik docker-compose.yml, a następnie wykonać w CLI komendę:

docker-compose up

Wideo

Wideo, w trakcie którym pokazuje jak krok po kroku zrealizować opisane czynności przedstawiam we Wideo na moim kanale YouTube. Materiał tym bardziej ciekawy, gdyż przedstawia jak wiele błędów można popełnić w pozornie prostych czynnościach 😉

Tags:
Show Buttons
Hide Buttons