w Praktyce
4 godz. 33 min · Docker · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerW początkowych sekcjach kursu, zrozumiesz czym jest Docker i jakie ma zalety wobec rozwiązań oferujących pracę z serwerami lokalnymi, np. XAMPP - poznasz jego architekturę, założenia oraz najważniejsze pojęcia, których nieznajomość często spędza sen z powiek nawet doświadczonym programistom.
Jako że Docker jest to narzędzie dla programistów i administratorów systemów operacyjnych, lwia część pracy z tym narzędziem odbywa się w konsoli. Przedstawię Ci najważniejsze polecenia powiązane z tą technologią oraz zestaw dobrych praktyk i protipów które zawstydzą niejednego inżyniera oprogramowania.
W tej sekcji tego kursu przejdziemy przez najważniejsze punkty tworzenia skonteneryzowanych aplikacji z perspektywy programisty aplikacji internetowych - jeśli chcesz szybko rozpocząć swoją przygodę z Dockerem, ponieważ znasz już podstawy teorii i czujesz się wystarczająco pewnie - możesz zacząć z tego miejsca! A jeśli tempo będzie zbyt szybkie - zawsze możesz wrócić do części teoretycznej pracy z Dockerem
Przebudowywanie zasobów na żywo, dynamiczne odczytywanie zawartości plików... To podstawowe koncepty które współcześni programiści sieci web biorą za pewnik. Przy nieznajomości Dockera, łatwo jest strzelić sobie w stopę i utrudnić swoją pracę, zabierając sobie możliwość korzystania z powyższych funkcjonalności. W tym kursie, pokażę Ci jak wygodnie pracować z Dockerem w środowisku developerskim.
Jedną z wielu zalet Dockera jest niewątpliwie proste przenoszenie zmian konfiguracji i infrastruktury ze środowiska developerskiego na produkcyjne. W tym kursie, poza przyswojeniem podstawowej wiedzy na temat Dockera poznasz szereg dobrych praktyk w kontekście bezpieczeństwa oraz przygotowywania Twoich aplikacji pod środowisko, na którym będzie uruchomiona Twoja aplikacja gdy uznasz że jest gotowa by ujrzeć światło dzienne.
Ten kurs to zestaw kompleksowej wiedzy dzięki której dowiesz się jak od zera, na żywo, stworzyć aplikację na Twoim lokalnym środowisku - i jakie kroki należy podjąć, aby móc zobaczyć ją w internecie - wszystko w kontekście Dockera, wysokiej skalowalności i bezpieczeństwa. W jednej z ostatnich lekcji kursu zobaczysz jak robię deploy na serwery DigitalOcean by uzyskać link do swojej nowo zbudowanej aplikacji internetowej.
Ten kurs jest kierowany do webdeveloperów, bądź zaawansowanych programistów którzy nie pracowali jeszcze z Dockerem. Przydatne może być zrozumienie interfejsu linii poleceń czyli tzw. konsoli, oraz podstawowa wiedza na temat web developmentu czy systemów operacyjnych. Jeśli potrafisz korzystać z systemu kontroli wersji git, na pewno ułatwi to Tobie zrozumienie konceptu pracy z poleceniami dockera. Niemniej, każde zagadnienie staram się tłumaczyć na bieżąco.
Cześć! W tej lekcji cała nasza ciężka praca,
którą włożyliśmy w to, aby stworzyć najlepszą aplikację.
Przez środowisko developerskie, po produkcyjne.
Ujrzy światło dzienne.
Dosłownie umieścimy ją po.
Prostu w Internecie, używając tego samego
Docker file, tego samego obrazu, którego zbudowaliśmy w poprzedniej lekcji.
W związku z czym to co będziemy
potrzebowali to jakieś zdalne repozytorium.
Aby software provided czy
host firmy hostingowe były w stanie dostać się do naszego obrazu.
Ja tutaj wykorzystałem po prostu registry.
Docker chyba,
więc jak byśmy tutaj zobaczyli, że jestem zalogowany na docker hubie.
No i. Generalnie możemy stworzyć sobie nowe.
Repozytoria klikając w repozytorium.
I to co musimy zrobić na samym początku to
stworzyć repozytorium z daną nazwą czyli np.
example.
Live at Web Project.
Powiedzmy stworzymy sobie takie repozytorium.
A tutaj wpisujemy tam to była szukajki, a. Opis może być.
Dowolny.
Production image just for testing purpose jest.
Kopiujemy od razu tutaj te wszystkie.
Polecenia, które dostajemy od docker huba.
To będzie oczywiście repozytorium publiczne.
Czyli będzie można je wyszukać tutaj.
Przynajmniej na etapie w momencie gdy ten kurs jest nagrywany.
Oczywiście lokalnie możecie ten obraz zbudować w dowolnym momencie.
Więc repozytorium jest stworzone.
Tutaj mamy informację jak otagować obraz, aby można było go wypchnąć do docker a.
I jak zobaczymy na docker image ls to zobaczymy, że tutaj ten obraz.
Docker test 2 nam zniknął, w związku z
czym ja po prostu szybko przejdę sobie na ostatni nasz branch 16.
Finish zbuduje go.
Ponownie docker build.
I tutaj możemy znaleźć nasze polecenie.
Które było.
Wykorzystane do zbudowania naszego obrazu, więc widzimy tutaj.
Przetargi i możemy ustawić.
Tutaj od razu odpowiedni.
Tag albo możemy zostawić taki.
Nasz lokalny, więc ja go sobie jeszcze raz tutaj zbuduje.
I możemy zmienić tag obrazu już po.
Tym jak on został wybudowany.
Czyli przy pomocy docker tag tutaj.
Nazwa obrazu lokalna stara. I możemy.
Podać nową nazwę.
Czyli po prostu kopiujemy ten parametr.
Przypiszemy sobie naszą nazwę lokalnego obrazu czyli docker.
Test 2 repozytorium to już zależy nam na
naszym repo w dla użytkownika w repozytorium example life project.
No i oczywiście musimy też doprecyzować nazwę tagu.
No i tutaj tak 0.01.
Ja to sobie od razu skopiuję na później.
Reagujemy i w tym momencie możemy zrobić.
Docker.
Push.
Dosłownie ten sam obraz.
Czyli ten. Tylko co?
Warto pamiętać, że
jeżeli chodzi o tuszowanie to chyba musicie zrobić najpierw docker.
Login i podać swoją nazwę użytkownika oraz hasło.
W przeciwnym wypadku możecie nie móc go wypchnąć.
Tutaj za dużo podałem argumentów.
Jeszcze raz docker push i sama nazwa tego obrazu z prefiksem pola.
I faktycznie to nam się wypycha, więc w
międzyczasie jak to się wypycha możemy zacząć myśleć o digital Digital.
Jest to jedna z firm hostingowych, która umożliwia hostowania.
Naszych obrazów Dockera jako aplikacje www.
I też ma taki fajny
fajną promocję dla nowych użytkowników, że po opłacie tej początkowej 5.
Dolarów po prostu, która jest na Waszym
koncie, możecie je wykorzystać na dowolne uruchomienie.
Aplikacji. Dostajecie 100 dodatkowych kredytów
czy 95 dodatkowych kredytów w dolarach, aby wykorzystać je do
uruchomienia Waszej aplikacji przez bodajże 2 miesiące 60 dni.
Więc co możecie zrobić, to po prostu stworzyć sobie wirtualną.
Kartę w Waszym. Banku.
Przelać tam 30 złotych czy jakkolwiek jest
teraz kurs dolara, no i po prostu tą kartę podpiąć pod telefon.
Więc zobaczmy czy faktycznie wepchnął nam się tutaj ten obraz.
I widzimy obraz w wersji 0.01.
Oczywiście możemy sobie podejrzeć różne
informacje o tym jak on został zbudowany, więc z tym nie ma najmniejszego problemu,
tak samo jak oglądaliśmy inne pliki innych projektów.
No i po zalogowaniu się jak widzicie ja tutaj mam.
Właśnie też kredyty.
One mi wygasną za 20 dni, więc raczej w
momencie kiedy oglądacie ten film już ta aplikacja nie będzie stała, bo ja nie
korzystam z tych stron jako mojego głównego providera hostingowego.
Zawodowo korzystam raczej z Aida Plus, a jeżeli chodzi o zarządzanie moimi.
Mają infrastrukturą, ale ta już jest naprawdę przyjemna.
Użytkownikowi i dobry, żeby zacząć swoją
przygodę z Jokerem i uruchamianiem swoich aplikacji na produkcji.
Nie ma najmniejszego problemu, żeby zostać
Digital 8, jeżeli będzie wam po prostu pasowało.
Więc ja po prostu tutaj co.
Muszę zrobić to podać nazwę mojego hubu
oraz repozytorium, więc w moim przypadku jest to w polach Example Web Project.
No i tak. To był 001, który wykonaliśmy.
Przechodzimy Next.
Tutaj mamy konfigurację na temat tego co robi ten obraz.
Czy to jest worker, czy to jest web service.
W naszym przypadku jest. To Web services, jakieś zmienne
środowiskowe, Run command jeżeli chcemy zmienić i partycje automatycznie.
Tutaj wykrył Na podstawie prawdopodobnie
tego expose, które ustawiliśmy w jednej z poprzednich lekcji.
Nie potrzebujemy teraz żadnej bazy danych.
Więc dalej.
I teraz po.
Prostu musimy dać jakąś nazwę naszego projektu, powiedzmy egzaminu Life Project.
To będzie nazwa naszego projektu.
I nasz URL też będzie posiadał tę nazwę z jakąś tam dodatkowym haszem w regionie.
Frankfurt jest dobrym miejscem na serwer, jeżeli pracujemy w Polsce.
Idziemy dalej i wybieramy nasz. Plan.
Hostingowy. Ja tutaj wybiorę ten najtańszy.
Bo to jest zwykła prosta aplikacja.
Internetowa i mamy tutaj szacowany koszt użycia.
W Digital.
Jak widzimy 10 dolarów miesięcznie za taki obraz zostało oszacowane, ale to
oczywiście zależy od ruchu na Waszej stronie internetowej.
Więc możemy go sobie tutaj zlinczować, czyli uruchomić deployment.
Więc w tym momencie Digital 8 zrobi zapytanie do Docker huba, pobierze sobie
ten obraz, spróbuje go zbudować, zrobię całą infrastrukturę.
Tego już tym się nie musimy martwić.
Z naszego punktu widzenia możemy po prostu poznać ten panel i zobaczyć co mamy.
Tutaj do. Dyspozycji np.
możemy podejrzeć sobie runtime logi, czyli to co sobie ustawiliśmy.
Jako standardowe wyjście naszego programu i mogliśmy podejrzeć poprzez docker logs.
To też tutaj będzie widoczne, więc możemy podejrzeć.
Produkcyjne logi w bardzo prosty. Sposób.
Tutaj mamy dostęp do konsoli, więc.
Prawdopodobnie będziemy mogli.
Się zalogować na ten obraz i jakieś.
Ustawienia tego obrazu, gdy on już tutaj jest.
Prawdopodobnie też będą dostępne, albo już nawet teraz na.
Jakimś serwerze chcemy to uruchamiać.
Jaki konfiguracja tak naprawdę został użyty.
Aby stworzyć ten obraz.
Na produkcji?
No i widzimy, że on już się tutaj nam z deploy chował.
Zobaczmy czy wszystko.
Działa tutaj W logach na razie nic.
Mieć nie będziemy, ponieważ nie było żadnego ruchu jeszcze na naszej.
Stronie, ale jeżeli otworzymy sobie tą stronę to widzimy, że już w momencie nawet
jak kliknąłem tam to mamy dwa zapytania http.
Jak jeszcze. Otworzę jedną kartę to tutaj nam wskakuje.
I to są te same logi.
Które ustawialiśmy u nas lokalnie.
Czyli jeżeli byśmy chcieli.
Wejść w Allow.
No to będziemy mieć.
Nasz endpoint, który zwraca nam informację Hello world from pay.
Więc nasz serwer.
Node jest.
Uruchomiony pokaże, który działa
identycznie na naszym lokalnym środowisku jak na produkcji jest w internecie.
Więc jeśli np by się wydarzyła taka
sytuacja, że mamy jakiegoś buga do rozwiązania to oczywiście tutaj.
Możemy go zauważyć w logach.
Powiedzmy, ale nie musimy go rozwiązywać
na produkcji, co jest oczywiście bardzo złą praktyką.
Możemy po prostu pobrać dokładnie ten sam
obraz, z którego ten deployment został zbudowany.
Pobrać go na nasze lokalne środowisko i jeżeli nasz kontener nie ma żadnych
zależności i że musimy mieć inny micro service zainstalowany.
Jeżeli ten kontener sam w sobie jest samowystarczalny.
No to możemy tak dywagować.
Produkcyjne błędy lokalnie bez większego problemu.
I tak samo jeżeli byśmy chcieli się przenieść z Digital.
ON. Nie ma najmniejszego problemu.
Docker jest jednolitym frameworkiem do pracy z infrastrukturą.
Więc nawet jeżeli byśmy chcieli w przyszłości.
Rozszerzyć nasze działania.
W kontekście tego, jak bardzo nasze rozwiązania są.
Skalowalne, no to oczywiście.
Możemy to zrobić w bardzo wygodny sposób.
I tym oto sposobem od zera, od pustego repozytorium, od zerowej wiedzy
przeszliśmy przez środowisko developerskie do produkcyjnego.
W sytuacji, gdzie możemy korzystać z
naszej strony internetowej, online, z przeglądarki.
No i oczywiście jeszcze.
Ostatnie słowo.
Jeżeli chodzi o ten link. No to oczywiście.
Możecie kupić sobie własną domenę i
przekierować po prostu cały ruch na digital.
A więc jeżeli byście chcieli mieć stronę super projekt kropka pl to nie ma sprawy,
Możecie po prostu przekierować ten ruch na widzi to owszem i Wasi klienci będą
wchodzili z PL, a wasza aplikacja będzie dalej.
Więc wydaje mi się, że to jest.
Bardzo dobre podsumowanie.
Tego kursu.
Oczywiście mam jeszcze kilka słów kończących oraz co do tego co można robić
w przyszłości jeżeli chodzi o Dockera, jak się dalej rozwijać.
W związku z czym nie przedłużając dłużej. Dziękuję Ci bardzo za te.
Lekcje i do zobaczenia w kolejnej.