‫W tej sekcji omawialiśmy wiele o Swarm. Swarm, Stacks and Secrets to rodzaj
‫trylogii o niesamowitych cechach, które naprawdę ułatwiają nam produkcję.
‫Chcę ci pokazać, jak to jest, jeśli faktycznie wziąłeś swoje pliki redagowania, uporządkujesz je
‫na kilka sposobów
‫i właśnie to nazywam spełnieniem marzeń.
‫Okazuje się, że możesz użyć jednego pliku do zrobienia wielu rzeczy, ale czasami twoja
‫złożoność rośnie i będziesz potrzebować wielu plików redagowania.
‫Chcę po prostu biegać naprawdę szybko.
‫Nie musisz tego robić samodzielnie, jeśli nie chcesz. Pokażę wam tylko przykład tego,
‫jak te pliki tworzenia mogą współpracować, aby budować środowisko w trakcie pracy.
‫W tym scenariuszu zamierzamy użyć funkcji dokowania do komponowania dla naszego lokalnego środowiska programistycznego.
‫Użyjemy konfiguracji i pliku dokera do dokowania, aby nasze środowisko CI przeprowadzało testowanie integracji.
‫Następnie, kiedy jesteśmy w produkcji, zamierzamy użyć tych plików do wdrożenia stosów doków, aby
‫faktycznie wdrożyć środowisko produkcyjne za pomocą stosu. Tak, jestem na mojej lokalnej maszynie i będziemy
‫używać przykładu przed scenariuszem Drupala, z serwerem bazy danych i frontendem sieciowym.
‫Mamy plik Docker, który wykorzystaliśmy w naszych poprzednich zadaniach. Przebudowujemy niestandardową, ale prostą konfigurację
‫drupal z szablonem.
‫Wtedy będziemy mieli ten domyślny plik do komponowania.
‫To się
‫nazywa nadpisanie, co zamierzamy zrobić. Zastąpienie polega na tym, że mam standardowy plik
‫kompozycji Docker i ustawia on wartości domyślne we wszystkich moich środowiskach.
‫Następnie mam ten plik przesłaniania, który domyślnie, Docker Compose, jeśli nazywa się tę dokładną nazwę,
‫utwórz okno dokowane. nadpisanie. yml, automatycznie przyniesie to za każdym razem, gdy robię kompilację dockera.
‫Zobaczysz, że w tym scenariuszu zakładamy rozwój lokalny, ponieważ naprawdę chcemy, aby ręcznie wpisywane polecenia,
‫które będziemy pisać, były najłatwiejsze lokalnie.
‫Zwykle w twoim środowisku CI wszystko jest zautomatyzowane, więc nie obchodzi nas, czy te polecenia
‫są trochę dłuższe.
‫Ale naprawdę zależy nam na łatwej kompilacji dockera.
‫Fajną rzeczą jest to, że Docker Compose automatycznie odczyta ten plik
‫i zastosuje go do nadrzędnego lub zastąpi wszelkie ustawienia w pliku yml Docker Compose.
‫I tutaj, zauważ,
‫że nie mam nazwy obrazu, ponieważ jest to już tutaj określone. W tym pliku zastępowania nadpisuję,
‫mówiąc, że chcę zbudować obraz lokalnie, używając pliku Dockerfile w bieżącym katalogu.
‫Chcę utworzyć port 8080 do lokalnego rozwoju. Przygotowuję kilka tomów, a zauważysz, że dałem ci przykład z
‫góry do bindowania, gdzie mógłbym wykonać niestandardowy motyw. I chcę umieścić mój motyw na moim hoście
‫w kontenerze, tak jak to zrobiliśmy w poprzednich sekcjach, tak, że mogę go zmienić lokalnie, a następnie
‫zobaczyć go od razu na serwerze.
‫A tak na marginesie, dla tego przykładu, w rzeczywistości nie wiem, jak rozwijać wątki w Drupalu.
‫Nie jestem do końca pewien, że jeśli zmienię tam plik, zostanie on automatycznie odzwierciedlony.
‫Po prostu chciałem pokazać przykład tego, jak pracujesz nad rozwojem w sieci, zazwyczaj w taki sposób, w jaki robisz to
‫bez konieczności zatrzymywania się i rozpoczynania tworzenia za każdym razem. Tutaj, pod postgresiem, mamy zmienną środowiskową
‫i sekretne ustawienia jak poprzednio. Mamy określone woluminy, a zobaczysz na dole,
‫tak
‫naprawdę mam sekret oparty na plikach, ponieważ kiedy tworzymy lokalny program, musimy użyć sekretu
‫opartego na plikach.
‫Sprawy stają się trochę interesujące, gdy patrzę na ten prod lub testuję pliki. Sposób, w jaki to zadziała,
‫należy pamiętać, że. nadpisanie. yml jest automatycznie pobierany przez linię
‫komend Docker Compose. W prod
‫lub test, będę musiał określić je ręcznie.
‫Więc do testu będziemy musieli użyć polecenia -f.
‫Jeśli pamiętasz z wcześniejszych sekcji, -f jest, gdy robimy dokowanie, że chcemy określić
‫niestandardowy plik. Pokażę ci to za chwilę.
‫Następnie w produkcji, ponieważ nie będziemy mieli linii komend Docker Compose na
‫serwerze produkcyjnym, to co zamierzamy tutaj zrobić, to będziemy używać komendy docker compose config.
‫Polecenie config faktycznie wykona wyjście przez zgniatanie lub łączenie danych wyjściowych wielu
‫plików konfiguracyjnych.
‫To będzie naprawdę fajne.
‫Prawdziwe szybkie, plik testowy ma tylko drupal i postgres.
‫Wyobraź sobie, że to było twoje rozwiązanie CI Jenkinsa lub Codeship CI, w którym chciałbym go budować za
‫każdym razem, gdy zatwierdzę mój kod, i chcę to nazwać, i chcę, żeby był na
‫tym porcie do celów testowych. Potem zamierzam użyć fałszywego hasła. Ale nie potrzebuję definiować żadnego z
‫woluminów, ponieważ nie zamierzam próbować zachować nazwanych danych woluminu, ponieważ znowu jest to tylko platforma CI.
‫Jak tylko przejdzie testy lub nie przejdzie testów, pozbędzie się wszystkiego.
‫W tym scenariuszu może się okazać, że mam taki przykładowy scenariusz danych, gdzie być może w
‫twoim rozwiązaniu CI masz po prostu bazy danych, które się tam znajdują, które pochodzą z niestandardowego repozytorium Git
‫lub może to jest pobranie FTP. Lub coś dzieje się podczas inicjowania
‫twojego CI, gdzie faktycznie pobiera plik bazy danych. I zamiast tworzyć bazę danych za każdym razem, gdy
‫wykonujemy testowanie CI, wystarczy zainstalować ten katalog przykładowych danych w miejscu, w którym powinny znajdować się nasze dane
‫PostgreSQL.
‫W ten sposób możemy zagwarantować, że otrzymamy te same dane próbki za każdym razem, gdy wykonamy test CI.
‫Nie zamierzam w to wchodzić dalej. Chciałem tylko pokazać, że taki może
‫być plik dla CI.
‫Następnie w produkcji mamy wszystkie nasze normalne problemy produkcyjne. Podajemy objętości naszych
‫konkretnych danych. Określamy nasz sekret. I zauważmy na dole, mamy zewnętrzny sekret.
‫Ponieważ mamy zamiar wprowadzić sekret już za pomocą wiersza poleceń, tak jak to zrobiliśmy
‫we wcześniejszym zadaniu.
‫Chodzi o to, że wszystkie trzy konfiguracje są w pewien sposób różne, ale
‫wszystkie odnoszą się do głównej konfiguracji lub do podstawowej konfiguracji, która właśnie definiuje dwie usługi i ich obrazy.
‫Możesz zobaczyć tutaj. Oto przypomnienie, jak to wygląda.
‫Zakończmy to i uruchommy kilka poleceń.
‫Jeśli spojrzę w tym katalogu, zobaczysz, że mam plik podstawowy, a następnie trzy pliki zastępujące.
‫Ponownie, pamiętaj, że nadpisanie. yml jest domyślny.
‫Jeśli zrobię coś dokającego w dockingu, to co tutaj zrobisz, użyj funkcji dokowania. yml najpierw, a następnie nakłada się
‫na override. yml jeden na górze. Chcę wstawić opcję -d,
‫abyśmy mogli szybko sprawdzić, jak to się zaczęło. Mam zamiar zrobić doker kontrolować na obrazie drupal.
‫I to, co chciałem wam pokazać, było tutaj, to wszystkie wymienione wierzchowce.
‫Wiemy, że plik zastąpił, ponieważ plik zastępujący był miejscem, w którym zdefiniowaliśmy wszystkie te
‫porty.
‫Więc wiemy, że to podniosło.
‫Oczywiście, jeśli nie wyłapie podstawowego, to nawet nie będzie wiedział, jakich obrazów użyć,
‫aby rzeczywiście na nas narzekał i mówiąc, że plik Compose był niekompletny.
‫Ta zadziałała.
‫Zróbmy naprawdę szybko.
‫Gdybyśmy mieli wykonać komendę, której potrzebowaliśmy do naszego rozwiązania CI, to, co musielibyśmy zrobić z
‫naszym rozwiązaniem CI, to upewnić się, że Docker Compose był tam, i zainstalowany, i dostępny, abyśmy mogli
‫wykonywać komendy do tworzenia dokerów. Następnie możemy podać -f, a
‫następnie kolejność f to plik podstawowy zawsze musi być pierwszy.
‫Zatem doker skomponuj yml, a następnie utwórz test dokowania.
‫Gdybyśmy zrobili to z końcem i -d, a potem poszedłem i obejrzałem tego samego drupala, zauważyliście,
‫że nie ma mocowań bindujących.
‫Są całkowicie pomijane, ponieważ w pliku testowym nie określono tych.
‫Właściwie nie potrzebowaliśmy Drupala do zapisywania informacji, ponieważ został on wyrzucony na
‫końcu naszego przebiegu CI.
‫A potem trzeci, mamy konfigurację produkcyjną.
‫Konfiguracja produkcji będzie trochę inna.
‫Zamierzam uderzyć w Strzałkę w Górę, a następnie tutaj zamierzam zrobić prod. Zamiast polecenia do
‫góry, chcę tutaj skonfigurować.
‫Jeśli tylko spojrzysz na pomoc bardzo szybko dla konfiguracji, ma tylko dwie opcje i żadna z nich
‫nie jest tak istotna w tej sytuacji.
‫Chcemy po prostu uruchomić konfigurację samodzielnie. To, co właściwie zrobi, to
‫obejrzenie obu plików i zsynchronizowanie ich w jednym pliku równoważnym.
‫To, co moglibyśmy tutaj zrobić, to po prostu uruchomić to polecenie gdzieś w naszym rozwiązaniu CI. Następnie wyprowadź go do
‫pliku, może z Tobą wiesz, coś takiego. Ten plik wyjściowy byłby używany oficjalnie
‫w produkcji do tworzenia lub aktualizowania naszego stosu.
‫Chciałbym jednak tutaj wprowadzić pewne zastrzeżenie.
‫To wszystko jest stosunkowo nowe.
‫Wiemy, że Secrets i Swarm Stacks są stosunkowo nowe.
‫Mają zaledwie kilka miesięcy.
‫Od tego nagrania.
‫Jest kilka szorstkich krawędzi.
‫Właśnie uruchomiliśmy tę komendę, a zauważysz, że sekretów nie ma tam.
‫To jest obecnie błąd.
‫Właściwie pracuję z zespołem Docker, aby sprawdzić, czy nie możemy zgnieść tego błędu.
‫Więc zanim to przeczytasz, być może zostało już naprawione.
‫Upewnij się, że sprawdzasz dane wyjściowe wiersza konfiguracji przed wdrożeniem
‫w produkcji.
‫Po drugie, opcja Compose Extends, o której tutaj nie mówiłem, jest innym sposobem na zastąpienie tych
‫plików Compose, w których faktycznie używasz pliku override i faktycznie definiujesz tam sekcję
‫extends.
‫Jest trochę bardziej deklaratywny, więc łatwiej go zrozumieć. Podam link w odnośnikach
‫do tej sekcji. Wystarczy wiedzieć, że opcja Extends nie działa jeszcze w stosach Swarms.
‫Nie wspominałem o tym tutaj, ponieważ nie daje to pełnego cyklu życia aplikacji, na który
‫liczyliśmy, ale oczekuję, że w pewnym momencie coś z tym zrobią.
‫Tak jak albo dodaj go do Swarm, albo stwórz lepszy workflow. Ponieważ naprawdę jest to ideą, do której
‫staramy się dotrzeć za pomocą wszystkich tych narzędzi, jest zapewnienie pełnego i łatwego cyklu życia od etapu
‫projektowania, poprzez test, produkcję, z tym samym zestawem konfiguracji, w tym samym zestawie obrazów .
‫Mam nadzieję, że zastanawiałeś się, w jaki sposób możesz tworzyć aplikacje w ten sposób i
‫jak rozszerzyć własne pliki redagowania dla złożonych scenariuszy.
‫Ponieważ nic nie wywołuje uśmiechu na mojej twarzy szybciej z Dockerem, niż gdy widzę, że ktoś uruchamia
‫polecenie jednoliniowe, aby wykonać coś, co wcześniej wymagało wykonania wielu skryptów.