Kurs Java

Docker Compose w akcji

Docker Compose to narzędzie używane do definiowania i uruchamiania aplikacji w Dockerze. Najczęściej jest kojarzony z aplikacjami wielokontenerowymi, chociaż równie efektywnie może być używany także w przypadku pojedynczego obrazu i kontenera.

Docker Compose pozwala zdefiniować konfigurację kontenera w czytelny, deklaratywny sposób za pomocą pliku YAML. To sprawia, że zarządzanie nawet pojedynczym kontenerem staje się prostsze, zwłaszcza gdy konfiguracja jest złożona (np. wymaga specjalnych ustawień sieci, volumenów, zmiennych środowiskowych itp.).

Poza ułatwieniem konfiguracji Docker Compose posiada szereg innych zalet:
  • Skalowalność i rozszerzalność — Nawet jeśli zaczynasz od jednego kontenera, Docker Compose sprawia, że dodanie więcej kontenerów później (np. serwera baz danych, kolejki, cache, itp.) jest proste i nie wymaga znaczących zmian w sposobie, w jaki zarządzasz swoją aplikacją.
  • Automatyzacja — Docker Compose ułatwia automatyzację procesów deweloperskich i wdrożeniowych, na przykład w ciągłej integracji i ciągłym wdrażaniu (CI/CD).
  • Wygodna konfiguracja — W środowiskach deweloperskich, gdzie deweloperzy mogą potrzebować uruchamiać aplikację z różnymi ustawieniami lub zależnościami, Docker Compose ułatwia zarządzanie i przełączanie między różnymi konfiguracjami.
  • Ustandaryzowanie Używając Docker Compose, możesz ustandaryzować sposób, w jaki aplikacja jest uruchamiana, co jest przydatne zarówno w produkcji, jak i w fazie dewelopmentu. Wszyscy członkowie zespołu mogą używać tej samej konfiguracji, co minimalizuje wystąpienie syndromu "u mnie działa".
  • Testowanie — W przypadku testowania aplikacji, Docker Compose pozwala szybko uruchamiać środowisko testowe, które może obejmować zależności takie jak bazy danych czy serwisy pomocnicze, nawet jeśli sama testowana aplikacja działa w pojedynczym kontenerze.

Konfiguracja Docker Compose

W celu skonfigurowania Docker Compose dla aplikacji w obrazie Docker o nazwie sporting-events, definiujesz plik docker-compose.yml, który umieszczasz w katalogu głównym projektu aplikacji. Dla uproszczenia zakładamy, że chcesz uruchomić tylko tę aplikację Spring Boot bez żadnych dodatkowych zależności, jak bazy danych czy innych usługi:
Komunikacja Fronted - Backend
Oto co znajduje się w Twoim pliku docker-compose.yml:
  • version: '3' — Określa wersję składni Docker Compose, którą ten plik używa. Wersja 3 to popularna i nowoczesna wersja składni, która wspiera większość funkcji Docker Compose.
  • services — Sekcja definiuje usługi (kontenery), które mają być uruchomione.
  • image — Wskazuje, że usługa sporting-events-service będzie używać obrazu Docker o nazwie sporting-events. Docker Compose będzie szukał tego obrazu lokalnie, a jeśli go nie znajdzie, spróbuje pobrać go z publicznego repozytorium obrazów (np. Docker Hub).
  • ports — Sekcja definiuje mapowanie portów między kontenerem a maszyną hosta. Innymi słowy, mapowanie 8080:8080 oznacza, że port 8080 w kontenerze (druga liczba) jest mapowany na port 8080 na hoście (pierwsza liczba). To umożliwia dostęp do aplikacji z zewnątrz kontenera.
  • environment — W tej sekcji możesz określić zmienne środowiskowe, które będą dostępne w kontenerze.
  • networks — Tutaj kontener zostanie podłączony do sieci o nazwie net zdefiniowanej nieco później - na końcu pliku. Pozwala to na komunikację między różnymi usługami zdefiniowanymi w docker-compose.yml, które są również częścią tej samej sieci.
  • networks — Sekcja na dole pliku definiuje sieci, które Docker Compose ma utworzyć. Definicja net to definicja sieci o nazwie net, którą możemy używać do łączenia kontenerów.
Appa Notka. Nazwa sieci net w pliku docker-compose.yml jest nazwą zdefiniowaną przez użytkownika. Możesz użyć dowolnej nazwy dla sieci w konfiguracji Docker Compose. Sieć została zdefiniowana w dwóch miejscach. Na samym dole w sekcji networks określasz nazwę sieci, w której ma działać kontener. W sekcji servicesużywasz nazwy sieci zdefiniowanej w sekcji networks.

Uruchomienie kontenera

Po zdefiniowaniu pliku docker-compose.yml przechodzisz w terminalu do katalogu, w którym znajduje się ten plik i uruchamiasz komendę docker-compose up. Docker Compose uruchamia kontenery zgodnie z konfiguracją określoną w pliku. Procesy wewnątrz kontenerów, takie jak Twoja aplikacja Spring Boot, są uruchamiane w kontenerach, a nie lokalnie na Twoim komputerze. Jednakże, standardowe wyjście (stdout) i błędy (stderr) z tych procesów są przekierowywane do Twojej konsoli, gdzie uruchomiłeś docker-compose up.

Ponieważ Docker Compose przekierowuje wyjście do Twojej konsoli i uruchamia kontenery w trybie pierwszoplanowym, Twoja konsola pozostaje "zablokowana" do momentu, aż kontenery będą uruchomione!
Komunikacja Fronted - Backend
Aby uniknąć tego problemu, możesz uruchomić Docker Compose w tle, używając docker-compose up -d. Wtedy kontenery będą działać w tle, a konsola będzie natychmiast dostępna do dalszych poleceń:
Komunikacja Fronted - Backend
W celu obejrzenia logów możesz uruchomić komendę docker-compose logs:
Komunikacja Fronted - Backend
Kod projektu spring-boot-3-web znajdziesz na naszym GitHubie — javappa-coding/coding-lab
Appa Notka. Analizujemy kolejne kursy na Udemy, wykorzystując nasze doświadczenie zawodowe do oceny ich efektywności i popularności wśród uczestników. Z dużym zaangażowaniem selekcjonujemy te, które naszym zdaniem są najbardziej efektywne i jednocześnie cieszą się uznaniem uczestników.
Kurs Docker & Kubernetes: The Practical Guide [2023 Edition] jest efektem tej głębokiej analizy i prezentuje idealne połączenie wysokiej jakości edukacyjnej z aktualnymi trendami i wymaganiami rynkowymi.
Zdjęcie autora
Autor: Jarek Klimas
Data: 10 stycznia 2024
Labele: Backend, Poziom średniozaawansowany, Java
Dołącz do grupy, w której znajdziesz ciekawe posty oraz poznasz odpowiedzi na swoje pytania!
Grupa Portalu Javappa
  • Regularnie publikowane posty dotyczące, Springa i Hibernate'a oraz samej Javy.
  • Możliwość zadawania pytań osobom tworzącym społeczność budowaną wokół tych samych zainteresowań
  • Bezpośredni kontakt z autorem portalu i kursów Javappa!
  • Wymiana doświadczeń między członkami grupy
  • Przyjazna atmosfera w zamkniętej grupie

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE