Docker Compose – co? po co? i jak? – złożone aplikacje na „klik”

W świecie który znam zmiany są jedyną stałą a obsługa, instalacja oprogramowania z czasem się zmienia więc wspomnę tylko, że dzisiejsze laboratorium przygotowałem na bazie Debian 11.7 i Docker wersja 24.0.2. Wersja aktualne na czerwiec 2023.

 

Opis powinien być jak najbardziej przystający do dokera na Ubuntu Windows czy MACos. Windows oczywiście po zainstalowaniu WSL który jest po prostu systemem Ubuntu. Instalacja może się różnić ale obsługa docker compose powinna być praktycznie identyczna. Doker z założenia jest stworzony tak żeby był niezależny od goszczącego go systemu operacyjnego. Obsługa może się zmieniać i zmienia się wraz ze znaną wersji Docker ale nie między goszczącymi je systemami.

Docker o co chodzi?

Słowem bardzo krótkiego wstępu. Sam Docker wykorzystywany jest do tworzenia mikro usług. Co to oznacza? To oznacza, że nawet najbardziej złożoną usługę rozbija się na najmniejsze elementy takie jak baza danych, serwer www, serwer cache i co jeszcze tam potrzeba w takiej aplikacji. Przy odpowiednim poziomie rozbudowania projektu możemy nawet rozbijać aplikacje na odrębne części pełniące niezależnie swoje odrębne role. Ma to sporo zalet w porównaniu do na przykład jednego logicznego serwera na którym to wszystko zainstalujemy. Jedyna opcja skalowania takiej monoblokowej aplikacji to zwiększyć RAM czy ilość procesorów. Dosyć szybko napotykamy na ścianę. Rozbicie na mikro usługi sprawia między innymi, że możemy rozłożyć obciążenie na wiele logicznych funkcji. Każda z tych funkcji może być obsługiwana przez inny serwer. Dodatkowo na przykładzie serwera www, możemy uruchomić wiele jego instancji, nawet na wielu fizycznych serwerach. Daje to olbrzymie możliwości skalowania.

Docker Compose o co chodzi?

No i super tylko na co nam ten docker compose?

 

Jak można było się zorientować z lakonicznego wstępu może się okazać, że tych kontenerów może być całkiem sporo. Najprostsze aplikacje składają się z jednego kontenera ale są rzadkością. W praktyce najmniejsze składają się z samej aplikacji i bazy danych. Jasne można samemu zbudować kontener zawierający wszystkie potrzebne komponenty w jednym kontenerze. Tylko, że tak się po prostu nie robi ponieważ właśnie od takiej konstrukcji monobloku staramy się uciec.

 

Wiemy już więc, że tych kontenerów możemy mieć przynajmniej kilka rodzajów dla naszej usługi. Jako przykład pokarzę jak odpalić serwer Zabbix który składa się z czterech różnych kontenerów.

 

No i to wracamy do docker compose. Przy jego pomocy jak z klocków stworzymy całkiem złożoną usługę przy pomocy jednego nie za bardzo skomplikowanego pliku i jednej komendy.

Jak to działa?

Możemy to przyrównać do przepisu na aplikację. Domyślnie taki plik z opisem aplikacji nazywa się docker-compose.yml. Zawiera dokładny opis elementów z których będzie się składać nasza aplikacja. Opis tego jak ma być podłączona do sieci, jak mają się ze sobą komunikować poszczególne elementy aplikacji. Słowem wszystko co potrzeba, żeby w sposób absolutnie powtarzalny tworzyć całe środowisko dla naszej aplikacji nie zależ gdzie i jak uruchomiane da ten sam efekt. Aby przekonać się jak o zrobić zapraszam do obejrzenia nowego filmu na YT.

 

Tak w skrócie wyglądała by konteneryzacja w stylu Docker Compose. Pamiętajcie, zawsze poza kopią samych plików kontenerów zawsze trzeba zrobić dodatkowy zrzut bazy danych ponieważ kopiowanie plików bazy danych nie jest zdecydowanie optymalnym sposobem na backup bazy danych. A odnośnie gotowych plików docker-compose.yml dla innych aplikacji w internecie znajdziecie ich mnóstwo lecz pamiętajcie, że zdecydowanie nie wszystkie są sensowne.

 

 

Jeśli chcielibyście dowiedzieć się więcej o TrueNAS napiszcie do nas. Opowiemy Wam jak działa i dlaczego warto?