‫W porządku. Spójrzmy na kilka przykładów Dockerfile.
‫W naszym repozytorium, które pobrałeś z mojego Githuba, przejdźmy do przykładu Dockerfile o numerze 2.
‫Tym razem mamy dwa pliki.
‫Mamy plik Dockerfile. A teraz mamy indeks. html.
‫Super proste. Witaj świecie. HTML.
‫Nie jest ważne, aby zrozumieć kod HTML.
‫Zamierzamy skopiować go do naszego obrazu kontenera, gdy go budujemy.
‫Jeśli spojrzymy na plik Docker, zobaczysz na nim, że faktycznie używamy Nginx jako naszego polecenia
‫FROM.
‫Nie budujemy własnego Nginxu, ponieważ idealnie, jeśli możesz użyć oficjalnego obrazu do wykonania
‫zadania z Docker Hub, będzie ci łatwiej zachować ten plik Docker i sprawić, by
‫działał dobrze.
‫W prostszych scenariuszach dość często oficjalnym obrazem jest praca. Ale kiedy rośniesz i dodajesz złożoność
‫do swojego środowiska i systemów, prawdopodobnie będziesz musiał dodać dodatkowe niestandardowe oprogramowanie
‫lub zmienić sposób jego uruchamiania lub dodać skrypty, aby dostosować konfigurację.
‫Ale kiedy zaczynam nowy projekt od podstaw, lub jeśli konwertuję jakąś starą aplikację, zawsze zaczynam
‫od oficjalnych zdjęć z Docker Hub. Kiedy raz trafię na blokady dróg i nie będę
‫mógł już używać tego obrazu, mogę wrócić do Docker Hub i spojrzeć jeszcze raz i zobaczyć, czy
‫jest coś niestandardowego, co jest naprawdę popularne, że mogę zaufać, i zajrzeć do zobacz, czy to rozwiąże mój problem.
‫Ale nie ma nic złego w budowaniu własnego.
‫To po prostu więcej pracy i więcej czasu na utrzymanie.
‫Więc tutaj jest super proste. Mamy trzy zwrotki.
‫Widziałeś wcześniej FROM. I tym razem mamy WORKDIR.
‫Tak naprawdę to po prostu działa zmiana katalogu dysku CD. Więc możesz ulec pokusie, aby użyć polecenia run i po prostu wpisz
‫polecenie cd w tym katalogu, a następnie wykonaj kilka czynności. Jednak najlepszą praktyką w
‫przypadku Dockerfiles jest zawsze używanie oddzielnej sekcji WORKDIR, gdy zmieniasz katalog.
‫Więc jeśli twój plik jest trochę skomplikowany i musisz poruszać się w swoim kontenerze,
‫aby robić rzeczy podczas jego tworzenia, zawsze będziesz chciał używać WORKDIR, ponieważ dużo łatwiej jest opisać w
‫pliku Docker, co robisz.
‫W tym przypadku to, co aktualnie robimy, to przejście do domyślnego katalogu Nginx
‫dla jego plików HTML.
‫W domyślnej konfiguracji w Docker Hub, Nginx działa tak samo jak serwer WWW i obsługuje
‫tylko pliki statyczne bezpośrednio z dysku kontenera.
‫Ostatnia zwrotka tutaj, mamy, jest kopią. Jest to sekcja, z której zawsze będziesz
‫korzystać, aby skopiować kod źródłowy z komputera lokalnego lub serwerów budowania do obrazów kontenera.
‫W tym przypadku po prostu bierzemy nasz prosty indeks. html i nadpisujemy plik w domyślnym katalogu
‫Nginx, dzięki czemu jest to nasza niestandardowa strona główna dla serwera WWW.
‫Zanim to zrobimy, zauważysz, że brakuje wymaganych sekcji, takich jak cmd.
‫Jak możemy temu zapobiec?
‫Cóż, w obrazie FROM jest już określony cmd.
‫A kiedy używamy FROM, dziedziczymy wszystko z pliku Docker, od którego "odchodzimy", jeśli to nawet słowo.
‫W ten sposób można łączyć pliki Docker razem, aby obrazy były zależne od innych
‫obrazów zależnych od innych obrazów.
‫W porządku. Zobaczmy, jak to działa.
‫Zanim to zrobimy, przypomnijmy sobie, co robi domyślny serwer Nginx.
‫Zróbmy szybki kontener dokera -p 8080, a nie będziemy potrzebować tego bardzo długo, więc zamierzamy zrobić -rm, więc usunie
‫się po rzuceniu. Nie dbamy o imię. Po
‫prostu uruchomimy Nginx. Jeśli przejdziemy do naszej przeglądarki i po prostu wpisamy
‫localhost, widzimy domyślną stronę indeksu Nginx.
‫DOBRZE.
‫Pamiętajmy o tym, a następnie po prostu opuśćmy ten kontener, a
‫teraz zbudujemy naszą wersję Nginxa z naszego dodatkowego kodu źródłowego.
‫DOBRZE.
‫Ten naprawdę powinien pójść naprawdę szybko.
‫Zauważyłeś, że zajęło to tylko kilka sekund. To dlatego, że już mieliśmy Nginx w naszej pamięci podręcznej obrazu. A wszystko co
‫działa to kopiowanie bardzo małego pliku i zmienianie katalogu roboczego.
‫Teraz uruchommy dokładnie polecenie, które właśnie uruchomiliśmy dla Nginx. Tylko tym razem wykorzystamy
‫ten nowy obraz, który właśnie zbudowaliśmy.
‫Przełącz się na naszą przeglądarkę, odświeżaj i świetnie.
‫Nasz niestandardowy indeks HTML działa tam i nasz kontener działa.
‫Jeśli zrobimy szybki obraz ls, możemy zobaczyć nasz najnowszy obraz u góry.
‫Jeśli rzeczywiście chcieliśmy wysłać to do Docker Hub, działa to tak samo jak wcześniej.
‫Musimy tylko ponownie go oznaczyć. Możemy więc zrobić tag obrazu dokowanego.
‫Jeśli pamiętasz polecenie help, możemy przyjrzeć się formatowi i zawsze jest to ten,
‫który otagujemy, i tag, który chcemy, aby został wywołany. Tak więc nigeryjka tagu graficznego dookola z najnowszym html.
‫A potem będę musiał to nazwać bretfisher ... tak.
‫Następnie, jeśli zrobię ponownie obraz w oknie dokowanym, zobaczysz, że te dwa górne wiersze mają ten sam identyfikator obrazu
‫i zostały oznaczone inaczej.
‫Teraz mogłem zrobić push do dockera z tym repozytorium i znacznikiem, a ja mogłem go załadować do Docker Hub.