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 opowiem Ci różnicę.
Między aplikacjami, które uruchamiam w pokerze, a aplikacjami, które uruchamiamy
bezpośrednio na naszym systemie operacyjnym.
Największą zaletą Dockera jest to.
Że jeśli ja na przykład miałbym
skorzystać z Waszego projektu, który tworzycie w Waszym wolnym czasie.
I wypracuje się na.
XAMPP na Windowsie, to zanim ja będę w stanie uruchomić tą
aplikację na moim systemie operacyjnym przykładowa macOS.
To jest tutaj dodatkowy. Tzw.
over head, czyli po prostu więcej pracy
trzeba włożyć w to, żeby upewnić się, że aplikacja będzie działała.
Tak samo u Was jak i u mnie.
Czyli pierwsza rzecz, którą daje nam
Docker to jest możliwość prostego współdzielenia.
Infrastruktury do uruchamiania aplikacji.
Kolejna kwestia jest taka, że posiadając na.
Przykład rozwiązania typu XAMPP, czyli
programy, które zawierają w sobie zarówno serwery HTTP, takie jak Apache,
interpreter PHP czy bazę danych MySQL ona jest zainstalowana na naszym głównym
systemie operacyjnym, do którego oczywiście dostęp mają inne
programy, do których może dochodzić do kolizji między innymi
aplikacjami, które też są uruchamiane na naszym systemie operacyjnym.
A w przypadku. Dockera.
Wszystko ładnie jest w kapsule opisane, czyli tak jakby.
Zawarte wewnątrz tego co się dzieje w grze.
Czyli jeżeli byśmy sobie narysowali tutaj graf taki, że.
Główna ramka to będzie nasz system operacyjny.
Operating system. Czyli np.
Windows.
Albo macOS, to nie ma tak naprawdę znaczenia czy Linux.
To wewnątrz naszego systemu operacyjnego mamy różne.
Programy, np. Skype.
Do tego Skype'a będę troszkę wracał, bo mam taką anegdotkę do opowiedzenia.
Mamy Skype'a, mamy Steama.
I powiedzmy jakiś klient Gmaila albo Chrome'a, powiedzmy.
No i w końcu całego naszego XAMPP a.
Czyli jeśli tutaj napiszemy XAMPP, to wewnątrz niego
też oczywiście będą zawarte pozostałe rzeczy, które wspominaliśmy, czyli serwer
HTTP, interpreter PHP czy baza danych MySQL.
Jest to o tyle fajne, że faktycznie XAMPP
pozwala nam pozbyć się tutaj tego dodatkowego wysiłku, który musielibyśmy
włożyć, aby skonfigurować te wszystkie technologie osobno, czyli.
PHP, Apache 3 maja SQL, więc nie musimy.
Się martwić konfiguracją.
Tych serwerów.
Jeżeli chcemy się tylko skupić na pisaniu kodu.
Natomiast tak czy siak.
XAMPP bazuje na naszym systemie
operacyjnym na tym samym systemie plików, do których dostęp ma np.
Skype czy Steam.
Pamięci oczywiście też współdziała z
systemem operacyjnym czy portów, z których korzystają inne aplikacje.
I anegdotka, o której chciałem powiedzieć,
to właśnie jest taka, że ja też zaczynałem moją przygodę z.
Web Development korzystając z XAMPP.
I któregoś razu. Oczywiście to było.
Bardzo dawno temu, prawdopodobnie ten problem już nie istnieje.
To było jeszcze na Windowsie 7.
W momencie, kiedy miałem zainstalowanego.
XAMPP a i Skype'a uruchomionego.
Wtedy mój serwer Apache nie chciał się
uruchomić, a działo się to z tego powodu, że Apache.
Na którym chodził po prostu serwer HTTP.
Korzystał z tego samego portu.
Tcp udp jak Skype.
To znaczyło, że po prostu nie mogę mieć.
Równolegle uruchomionego Skype'a.
A to czasami też było. To były takie.
Czasy, że korzystało.
Dalej się korzysta w korporacjach do po
prostu komunikacji z innymi współpracownikami.
Więc ja wtedy ze znajomymi rozmawiałem na Skypie, pracując nad danym projektem.
No i niestety dało się to oczywiście obejść, zmieniając
po prostu port, na którym skrypt nasłuchiwał bodajże.
Ale tego problemów nie ma w ogóle w pokerze.
Jeżeli byśmy sobie wyobrazili, jaka jest różnica między XAMPP a Dockera.
To tak naprawdę moglibyśmy zrobić coś takiego.
To.
To, jak naprawdę wygląda i że jest to zmiana taka bardzo błaha.
Natomiast każdy z tych.
Boxów, które narysowałem, każdy z tych prostokątów.
Jest wtedy osobnym.
Serwerem w swoim własnym kontenerze. To znaczy.
On jeżeli tego jawnie.
Nie powiemy.
On nie wystawi swoich.
Portów do naszego systemu operacyjnego. Czyli jeżeli np.
. Apache byłby uruchomiony wewnątrz Dockera.
To jeżeli my jawnie nie powiemy OK Docker.
Proszę aby Apache było dostępne w moim systemie operacyjnym na porcie 80.
To Apacz i.
Tutaj nie będzie tam konfliktową ze sklepem, bo oczywiście
były takie sytuacje, że chciałem po prostu korzystać ze skype'a,
ale XAMPP wtedy przeszkadzał, więc musiałem XAMPP wyłączać.
Inna sprawa jest taka, że każdy z tych boxów.
W przypadku Dockera ma swój własny system plików i bazując na obrazach.
Jesteśmy w stanie w prosty sposób usuwać i dodawać nowe.
Serwery, nowe aplikacje.
Mając pewność, że jeżeli będziemy chcieli pozbyć się ich z naszego systemu
operacyjnego, to nie zostanie na nim żaden ślad.
Gdzie w przypadku XAMPP a?
Jeżeli spróbujecie odinstalować XAMPP a. Ale np.
mieliście jakieś customowe konfiguracje, to nawet po jego odinstalowaniu te.
Pliki pomocnicze.
Które tam się mogły utworzyć, a one dalej zostaną na waszym systemie operacyjnym.
Oczywiście to nie są jakieś wielkie.
Pliki, to raczej są to są.
Pliki tekstowe.
Natomiast jeżeli chodzi o czystość systemu.
Operacyjnego, no to oczywiście nam w tym pomaga.
No i w momencie, kiedy korzystamy z Dockera jako.
Platformy do zarządzania infrastrukturą.
To jesteśmy w stanie tak naprawdę przekazać naszą.
Aplikację dowolnej osobie.
Która też korzysta z Dockera.
Czyli niezależnie od tego czy ja jestem na Maku, czy.
Ty jesteś na Windowsie, czy ktoś jest na Linuksie.
Teoretycznie Docker daje tę warstwę kompatybilności.
Między systemami operacyjnymi.
Dodatkowo te same obrazy.
Które tworzy się w Dakarze.
Mogą zostać użyte w systemach produkcyjnych.
To znaczy, jeżeli chcielibyście faktycznie umieścić.
Swój swój obraz, swoją aplikację na jakimś hostingu, który wspiera Dockera.
To tak naprawdę integracja.
Z tym, aby Wasza aplikacja była online zajmie.
Chwilę. A jeśli zdecydujecie się zmienić.
Providera usług hostingowych.
To tak samo posiadacie ten sam obraz z
kapsułą, ale nie musicie tego konfigurować za każdym razem dla różnych środowisk.
Od początku uruchamia.
Się tylko kilka poleceń i wszystko
jest uruchamiane w taki sam kontrolowany sposób.
Więc jeśli miałbym to podsumować.
Docker daje nam po pierwsze stabilny
framework do pracy z infrastrukturą naszych aplikacji, czyli po prostu.
Uruchamianie naszych serwerów powiedzmy.
Po drugie ułatwia współpracę na kodzie
źródłowym, ponieważ nie trzeba się martwić jak.
Skonfigurować nasze serwery.
Wydajemy kilka poleceń i dowolna osoba, z którą chcemy współpracować będzie miała
dostęp do dokładnie tej samej wersji aplikacji.
No i będziemy oczywiście.
Mieli porządek na naszym systemie operacyjnym.
Brak konfliktów z portami, o czym też będę mówił w kolejnych
lekcjach, jak to wygląda, jak to rozwiązać?
A więc.
Generalnie Docker jest świetnym narzędziem.
Zwłaszcza jeżeli jesteście zainteresowani
konfiguracją serwerów czy tematyką taką jak DevOps.
Więc w kolejnej lekcji opowiem troszkę o
architekturze Dockera i o tym jak zainstalować nasze.
Środowisko tak abyście mogli korzystać.
Z Dockera na Waszym komputerze
i być może pracować równolegle do tego jak oglądacie ten kurs.
Dzięki.