‫Ta sekcja skupi się wyłącznie na Docker Compose, będącym kombinacją
‫narzędzia wiersza poleceń i pliku konfiguracyjnego. Wymagania dla tej sekcji są takie,
‫że musisz znać wiele podstaw z kilku ostatnich sekcji dotyczących obrazów i kontenerów.
‫Gdy będziemy przechodzić ten kurs, prawdopodobnie zaczniecie mnie słyszeć coraz
‫bardziej podekscytowani, ponieważ wszystko będzie coraz lepsze.
‫Dobrze?
‫Kiedy uczysz się jednego komponentu, myślisz: "Człowieku, wiążące wierzchowce i tomy są naprawdę fajne. To mnie uratuje.
‫Mogę sobie wyobrazić, jak zamierzam to wykorzystać. Bla bla bla bla.
‫Potem przyjdę z kolejną rzeczą, która będzie jeszcze lepsza niż to, czego właśnie się nauczyłeś.
‫W tym przypadku nie może być bardziej prawdziwe.
‫Docker Compose. Więc co to jest? I dlaczego nam zależy? Tak niewiele usług oprogramowania jest naprawdę niezależnych.
‫Kiedy myślisz o swoich pojemnikach, są one jednym rozwiązaniem procesowym i rzadko będziemy używać
‫tylko jednego pojemnika do rozwiązania problemu lub świadczenia usługi naszym klientom.
‫Nasze kontenery często wymagają innych pojemników, takich jak SQL lub kluczowa wartość. Oraz inne aplikacje, które będziemy musieli uruchamiać
‫w kontenerach, takich jak proxy lub interfejsy sieciowe lub pracownicy zaplecza, i tak dalej.
‫Co by było, gdybyśmy mieli możliwość połączenia wszystkich tych elementów naszego rozwiązania
‫razem, gdzie nie musielibyśmy pamiętać wszystkich naszych opcji dokowania, a następnie umieścić je w dyskretnych, wirtualnych
‫sieciach z relacjami między nimi, a jedynie ujawnić portów, a następnie obrócić je wszystkie i rozerwać jednym
‫poleceniem.
‫Cóż, to jest Docker Compose.
‫Zanim zanurkujemy, musimy wyjaśnić, że Docker Compose
‫składa się z dwóch części. Pierwszą częścią jest plik YAML i bardzo łatwo go zrozumieć.
‫Jest napisany w YAML, a jeśli nigdy nie zajmowałeś się YAML, jest to bardzo łatwy język konfiguracji.
‫To prawie tak proste, jak byłby plik INI.
‫Myślę, że to łatwiejsze, ponieważ pokazuje hierarchię.
‫Zanurzymy się w tym. W tym pliku należy określić wszystkie
‫kontenery, które należy uruchomić, potrzebne sieci, dowolne woluminy, zmienne środowiskowe, obrazy i wszelkie inne opcje
‫konfiguracji.
‫Druga część komponentu Docker Compose to narzędzie CLI, które jest kompilatorem dokera, którego
‫używamy zwykle tylko do lokalnego testowania i testowania, używając pliku YAML, który utworzyliśmy, aby uprościć nasze polecenia Docker.
‫Porozmawiajmy o tym pliku Docker Compose.
‫W rzeczywistości istnieją wersje do rzeczy, które można umieścić w pliku do komponowania. Więc kiedy Docker Compose powstał wiele lat temu, został faktycznie
‫nazwany "Figem" i po prostu przyjął wersję 1. W rzeczywistości nie było
‫nawet listy wersji w pliku. W miarę dojrzewania i dodawania nowych
‫funkcji do pliku, na przykład do sieci i woluminów, utworzyło oświadczenie wersji, które jest
‫w rzeczywistości pierwszym wierszem pliku. Ten plik może być rzeczywiście używany z interfejsem CLI Docker Compose, o którym za
‫chwilę porozmawiamy.
‫Jest to ponownie przeznaczone głównie do zarządzania rozwojem lokalnym i ułatwiania poruszania się w
‫waszych środowiskach na lokalnym komputerze.
‫Teraz, począwszy od początku 2017 roku, mamy wersję 1. 13 i cokolwiek poza tym, pliki te można teraz używać bezpośrednio
‫z wierszem poleceń docker w produkcji z rojem. Oczywiście w linii poleceń jest
‫bardzo pomocna opcja --help.
‫Patrząc na niektóre przykłady, pamiętaj, że plik Docker Compose jest nazwą domyślną, ale możesz użyć
‫dowolnej nazwy pliku, pod warunkiem, że jest to poprawna nazwa YAML i że używasz opcji -f, aby określić, który plik
‫chcesz ". próbuję użyć.
‫Jeśli otworzę swój edytor i przyjrzę się tutaj szablonowi, chciałem tylko pokazać zarys tego,
‫jak powinien wyglądać.
‫Na początku mamy wartość wersji.
‫Najnowsza wersja w pierwszym kwartale 2017 roku to 3. 1.
‫Ale zawsze robię co najmniej wersję 2. Jeśli nie dodasz tam tej linii, zawsze przyjmuje się, że jest to wersja
‫1.
‫Ale nie polecam tego, ponieważ tracisz wiele funkcji.
‫Zwykle zaczynam od wersji 2. Następnie, jeśli potrzebuję określonych funkcji z wersji 3 i 3. 1, kończę
‫wpisując tam numer wersji. Zobaczysz pozostałe trzy główne sekcje: usługi,
‫wolumeny i sieci, prawda?
‫Jest to hierarchiczne.
‫W usługach wszystko może składać się z dwóch lub czterech spacji, ale musi być spójne.
‫Jeśli po prostu przejrzysz YAML w Internecie, znajdziesz kilka stron, które poprowadzą cię ze szczegółami, jak
‫sformatować ten plik.
‫Jeśli używasz nowoczesnego edytora, w rzeczywistości będzie on mówił językiem YAML i wie, jak radzić sobie z
‫tymi plikami i ich formatowaniem.
‫Zwykle w tym przypadku masz przynajmniej usługi, które są po prostu kontenerami.
‫Powodem, dla którego faktycznie nazywają je usługami, jest to, że każdy kontener, który tutaj tworzysz,
‫mógł mieć wiele tych kontenerów dla nadmiarowości. Musieli więc wymyślić inne
‫słowo.
‫Myślę, że usługi są świetne, ponieważ to w zasadzie to, co robisz. Dobrze?
‫Każdy kontener lub pojemnik, które są identyczne, których używasz, zwykle zapewniają usługę dla
‫czegoś.
‫Pod nazwą usługi i znowu możesz ją nazwać, jak chcesz.
‫Nie musi to być nazwa obrazu lub wcale nie musi być niczym powiązanym.
‫Może to być Barney dla nazwy usługi, ale będzie to nazwa DNS, o której dowiemy się
‫później, używana w sieciach Docker.
‫Podobny do tego, kiedy nadajesz -name polecenie uruchomienia dockera.
‫Tutaj pokazałem, że możemy opcjonalnie określić obraz. Możemy podać alternatywne polecenie
‫do uruchomienia. Jeśli chcemy nadpisać rzeczywiste polecenie, które zostało określone w obrazie, gdy go
‫uruchomimy, możemy to zrobić tutaj.
‫Zasadniczo, wszystkie rzeczy, które robimy z polecenia uruchamiania dockera, możemy zapisać tutaj. Ponieważ o to właśnie w
‫tym wszystkim chodzi, bierze całą robotę z pamiętania wszystkich różnych rzeczy w poleceniu Docker
‫Run dla tych rzeczy, które ciągle pracujesz.
‫Jeśli masz własne środowiska programistyczne lub własne narzędzia, prawdopodobnie nie chcesz wpisywać
‫tych poleceń w kółko. Skrypty powłoki mogą tak wiele zrobić.
‫Dobrze?
‫Tak więc ten plik faktycznie zastąpiłby skrypt powłoki, który zautomatyzowałby polecenia uruchamiane w oknie dokowanym.
‫Jest to o wiele lepszy sposób na zrobienie tego.
‫Łatwiej jest go przeczytać i jest lepiej udokumentowany.
‫Zauważysz, że spacje tutaj są dozwolone.
‫Możesz mieć spacje w komentarzach, gdziekolwiek chcesz.
‫Jeśli masz wiele usług, po prostu upewnij się, że są to unikalne nazwy.
‫Następnie inne części, które określamy, to wolumeny i sieci. I znowu, są to również opcje opcjonalne.
‫Zasadniczo są to te same zasady, co przy uruchamianiu z wiersza poleceń.
‫Jeśli kiedykolwiek będziesz musiał użyć tworzenia woluminu dokera lub sieci dokera, utwórz polecenia, i znowu
‫nie musisz tego robić.
‫To zależy od twojej sytuacji.
‫Możesz umieścić je także tutaj.
‫Spójrzmy na prawdziwy świat, prosty przykład.
‫Pamiętasz w poprzedniej sekcji, że mieliśmy wykład, w którym bardzo szybko użyliśmy Jekylla, aby po prostu wykonać
‫przykład montażu.
‫Tak wygląda plik składający się na tę komendę do dokow ania, a zobaczysz, że
‫podałem tutaj obraz.
‫Nazwałam to Jekyll.
‫Dałem jej tom. Zauważycie, że zamiast używać pwd, Compose rzeczywiście rozumie kropkę, co oznacza, że
‫jest to bieżący katalog roboczy, w którym się znajduję.
‫Po prostu użyj tego katalogu, z którego uruchamiam plik do komponowania. Następnie porty lub opcja -p.
‫Zauważysz kilka drobiazgów dotyczących YAML, gdzie, gdy coś ma tylko jedną opcję, na przykład,
‫jeśli ma być tylko jeden obraz dla każdej usługi, zwykle jest to format klucza i wartości, jak ten.
‫Jeśli będzie to lista elementów, takich jak wolumeny i porty, w których możesz mieć wiele, zauważysz,
‫że plik skomponowany ma zwykle liczbę mnogą. Zamiast woluminu są to woluminy. A zamiast portu to porty.
‫A potem pojawi się format listy z -.
‫Jeśli przejdziemy do innego przykładu, naprawdę szybko.
‫Zobaczysz, że w tym przypadku
‫jest to przykładowa konfiguracja WordPress, w której masz tu usługę bazy danych, która uruchamia
‫kontener bazy danych.
‫A potem kontener serwera WordPress na górze.
‫Zauważysz małą rzecz, która różni się tym, że używamy zmiennych środowiskowych, które
‫byłyby takie same jak -e w linii poleceń. Ale zamiast formatu listy, w którym
‫mamy -,
‫jest to kolejny klucz i wartość.
‫W tym formacie nie używamy -, tylko podajemy klucz i wartość.
‫Gdybym potrzebował dodać jeszcze jeden, po prostu bym to zrobił tutaj. Wszystkie te zostaną przekazane do
‫kontenera po uruchomieniu za pomocą wiersza polecenia compose.
‫Na koniec mamy jeszcze jeden przykład. Ta jest nieco bardziej skomplikowana. W rzeczywistości
‫pracowałem ostatnio nad utworzeniem klastra serwerów z trzema bazami danych za serwerem WWW Ghost.
‫Ghost to tak naprawdę system blogów podobny do WordPress. Zobaczysz, że mam wiele
‫zmiennych środowiskowych dla każdego z tych kontenerów.
‫Więc mam swój kontener Ghosta na górze. Wtedy mam to coś znanego jako SQL
‫Proxy, który znajduje się przed serwerami MySQL i działa jako system równoważenia obciążenia i rozwiązanie awaryjne.
‫Potem mam każdy z moich dwóch serwerów MySQL. Zauważysz tutaj inną opcję, która mówi: "zależy od"
‫i od tego zależy bardzo często.
‫Zasadniczo pomaga to programowi Compose zrozumieć relacje między tymi usługami. Wie, że jeśli muszę
‫uruchomić mojego Ghosta, to muszę również uruchomić inne.
‫Widać tutaj, że mój Duch od tego zależy. Omówimy, jak to działa
‫w późniejszych wykładach.
‫Ale na razie jest to prawdopodobnie dużo do strawienia, i wszystkie te różne polecenia, ale ufaj, że
‫Docker ma naprawdę świetną dokumentację na swojej stronie internetowej. Jeśli po prostu szukasz pliku Docker Compose
‫w Google, prawdopodobnie znajdziesz go przy pierwszych kilku trafieniach.
‫To będzie pod dokumentami. doker. com, jak zwykle, i
‫będzie to dokumentacja dotycząca każdej małej opcji klucza i wartości, którą posiadasz.
‫Zobaczysz, zależy od właśnie wspomniałem. Zobaczysz tutaj środowisko, w którym pokazuje różne sposoby
‫wprowadzania zmiennych środowiskowych. Wspaniała w tej dokumentacji jest
‫wiele przykładów.
‫Osobiście jestem na tej stronie każdego dnia, tak jak jestem na stronie opcji poleceń do uruchamiania w doku lub na stronie
‫opcji polecenia tworzenia.
‫Ciągle się do nich odwołuję, ponieważ w dzisiejszych czasach jest tak wiele funkcji, że nie mogę
‫ich wszystkich zapamiętać.
‫Więc trzymam je blisko w moich zakładkach.
‫Teraz, gdy mamy ogólny pogląd na to, jak może wyglądać format pliku do komponowania, przejdźmy
‫do linii poleceń i poznajmy narzędzie Docker Compose CLI.