Jak utworzyć stos lampy na bazie Docker za pomocą Docker-Compose na Ubuntu 18.04 Bionic Beaver Linux

Jak utworzyć stos lampy na bazie Docker za pomocą Docker-Compose na Ubuntu 18.04 Bionic Beaver Linux

Cel

Po tym samouczku będziesz mógł utworzyć środowisko lampy za pomocą technologii Docker.

Wymagania

  • Uprawnienia korzeniowe
  • Podstawowa znajomość Dockera

Konwencje

  • # - Wymaga podanych poleceń Linuksa, które można wykonać z uprawnieniami root
    bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Inne wersje tego samouczka

Ubuntu 20.04 (Focal Fossa)

Wstęp


Docker to projekt open source mający na celu zapewnienie oprogramowania w środku pojemniki. Możesz myśleć o kontenerze jako rodzaju „pakietu”, odizolowanego środowiska, które dzieli jądro z komputerem hosta i zawiera wszystko, czego potrzebuje aplikacja. Wszystkie kontenery są budowane za pomocą obrazy (Centralne repozytorium obrazów dla nich jest Dockerhub).

W tym samouczku zobaczymy, jak utworzyć stos lampy na podstawie dokerowanych komponentów: Po filozofii „jedna usługa na kontener” zgromadzimy środowisko za pomocą środowiska za pomocą Kompozycja dokera, narzędzie do organizacji kompozycji kontenerów.

Jedna usługa w porównaniu z wieloma usługami dla kontenera

Korzystanie z jednej usługi na kontener ma kilka zalet, zamiast uruchamiać wiele usług w tym samym. Na przykład modułowość (możemy ponownie wykorzystać pojemnik do różnych celów) lub lepszą zdolność konserwacji: łatwiej jest skupić się na określonym fragmencie środowiska zamiast rozważania wszystkich z nich jednocześnie. Jeśli chcemy szanować tę filozofię, musimy utworzyć pojemnik dla każdego elementu naszego stosu lampy: jeden dla apache-php i jeden dla bazy danych. Różne kontenery muszą być w stanie ze sobą rozmawiać: w celu łatwego zorganizowania połączonych pojemników, których użyjemy Kompozycja dokera.

Kroki wstępne

Przed kontynuowaniem musimy zainstalować doker I Kompozycja dokera W naszym systemie:

# apt-get instal instaluj Docker-Compose

Pakiety zostaną zainstalowane za kilka sekund, a doker Usługa zostanie automatycznie uruchomiona. Możemy teraz przystąpić do tworzenia katalogu dla naszego projektu i wewnątrz, kolejnego, który utrzyma strony, które będą obsługiwane przez Apache. DocumentRoot byłby dla niego znaczącą nazwą; W tym przypadku jedyna strona, która zostanie obsługiwana indeks.php:

$ mkdir -p Dockerized-Lamp/Documentroot $ echo ""> Dockerized-Lamp/DocumentRoot/Index.php 
Kopiuj

Tutaj nasz kod składa się po prostu w phpinfo Funkcja: To wyjście (strona pokazująca informacje o PHP, na wypadek, gdybyś nie wiesz) będzie domyślnie wyświetlona nasz serwer. Teraz użyjmy naszego ulubionego edytora, aby stworzyć Kompozycja dokera.yml Plik do naszego projektu.



PHP-apache

Możemy teraz zacząć dostarczać instrukcje dotyczące budowania i łączenia naszych kontenerów z plikami kompozycji Docker. To jest plik, który używa Yaml składnia. Wszystkie definicje muszą być podane do usługi Sekcja.

Wersja: „3” Usługi: PHP-Apache: obraz: PHP: 7.2.Porty 1 -apache: - 80:80 Wolume: - ./DocumentRoot:/var/www/html linki: - „mariadb” 
Kopiuj

Rzućmy okiem na to, co właśnie tu zrobiliśmy. Pierwszy wiersz, który włożyliśmy do pliku, wersja, Określa, z jakiej wersji składniowej Docker będziemy używać, w tym przypadku wersja 3, najnowsza dostępna główna wersja. W środku usługi Sekcja zaczęliśmy opisywać naszą usługę, określając jej nazwę, PHP-apache (dowolna nazwa, możesz użyć tego, co chcesz), a następnie instrukcje dotyczące budowy.

obraz Słowo kluczowe pozwala Dockerowi wiedzieć, jakiego obrazu chcemy użyć do budowy naszego kontenera: W tym przypadku użyłem 7.2.1-apache który zapewni nam PHP 7.2.1 wraz z serwerem WWW Apache. Potrzebujesz innej wersji PHP? wystarczy wybrać spośród wielu podanych na stronie obrazu na DockerHub.

Druga instrukcja, którą podaliśmy, jest porty: Mówimy Dockerowi, aby zmapił port 80 na naszym hoście, do portu 80 na kontenerze: w ten sposób pojawi się, gdy uruchomiliśmy serwer WWW bezpośrednio w naszym systemie.

Następnie użyliśmy wolumeny instrukcja określenia Mocować. Ponieważ podczas opracowywania kod bardzo się zmienia i szybko, nie byłoby sensu umieszczać kodu bezpośrednio w kontenerze: w ten sposób powinniśmy go odbudować za każdym razem, gdy dokonujemy pewnych modyfikacji. Zamiast tego zamierzamy powiedzieć Dockerowi, aby umocnił się DocumentRoot katalog, w /var/www/html wewnątrz pojemnika. Ten katalog reprezentuje główny apache Virtualhost Dokument root, zatem kod, który w nim umieściliśmy, będzie natychmiast dostępny.

Wreszcie użyliśmy połączyć Słowo kluczowe określające Mariadb jako jego argument. To słowo kluczowe, które nie jest potrzebne, jak może się wydawać, utworzenie połączenia między dwoma kontenerami: nawet bez określenia go, Mariadb usługa byłaby osiągalna z wnętrza pojemnika zbudowanego dla Apache-Php Usługa, używając swojej nazwy jako nazwy hosta. Słowo kluczowe robi dwie rzeczy: najpierw pozwól nam opcjonalnie określić Alias Możemy użyć do odniesienia do usługi oprócz jej nazwy. Na przykład pisząc:

Link: Mariadb: serwis bazy danych 
Kopiuj

Do usługi można również osiągnąć za pomocą serwis bazy danych. Druga sprawa połączyć robi, określa zależność: w tym przypadku PHP-apache Usługa będzie uważana za zależną od Mariadb Po pierwsze, więc ten drugi zostanie uruchomiony przed tym pierwszym podczas budowania lub uruchamiania środowiska.



Zainstaluj rozszerzenia PHP

Domyślny PHP-Apache Plik nie zawiera niektórych rozszerzeń PHP, takich jak MySQLI lub PDO. Aby je zainstalować, musimy zbudować własny plik dokujący. Aby to zrobić, tworzymy katalog w naszym projekcie o nazwie PHP-APache (to będzie nasz buduj kontekst) I wewnątrz naszego pliku dokera. Wklej i zapisz poniższy kod jako PHP-Apache/DockerFile:

 Od PHP: 7.2.1-apache opiekun Egidio uruchomić Docker-Php-Ext-install PDO PDO_MYSQL MYSQLI 
Kopiuj

Jak widać, z Z instrukcja, daliśmy, że ten plik dokujący powinien być oparty na domyślnym. Następnie zawarliśmy URUCHOMIĆ Instrukcja: Korzystanie z skryptu podanego na samym obrazie, Docker-Php-Ext-install, Uwzględniamy rozszerzenia potrzebne do użycia PDO i MySQLI. W tym momencie, jeśli chcemy korzystać z naszego niestandardowego pliku dokera, musimy nieznacznie zmienić sekcję PHP-apache w naszym kompozycie dokera.YML, w ten sposób:

Wersja: „3” Usługi: PHP-Apache: Kompilacja: Kontekst: ./PHP -APache Porty: - 80:80 Wolume: - ./DocumentRoot:/var/www/html linki: - „mariadb” 
Kopiuj

Co się zmieniło? Zamiast bezpośrednio określać zdalny obraz do użycia, podaliśmy kontekst instrukcja, wewnątrz zbudować Sekcja, tak że pliki dokerowe zawarte w katalogu, który utworzyliśmy i tutaj podany jako argument, zostanie automatycznie używany. Katalog kontekstowy jest importowany przez Docker Daemon podczas budowania obrazu, więc jeśli chcemy dodać dodatkowe pliki, musimy je również umieścić.

Usługa bazy danych

Baza danych w istotnej części środowiska lampy, jest wykorzystywana do trwałości. W takim przypadku będziemy używać Mariadb:

MARIADB: Zdjęcie: Mariadb: 10.1 Wolume: - mariadb:/var/lib/mysql środowisko: tz: „Europe/rome” mysql_allow_empty_password: „nie” mysql_root_password: „rootpwd” MySQl_user: „TestUser” MySQl_Password: „TestPassword” Mysql_Database: „TESTDB” 
Kopiuj

Wiemy już, co obraz Słowo kluczowe jest dla. To samo dotyczy wolumeny instrukcja, z wyjątkiem faktu, że tym razem nie ogłosiliśmy Mocować, Zamiast tego odnieśliśmy się do Nazwany tom, dla wytrwałości. Ważne jest, aby przez chwilę skupić się na różnicy między nimi.

Jak powiedział wcześniej, Mocować jest szybkim sposobem zamontowania katalogu hosta wewnątrz kontenera, aby pliki zawarte we wspomnianym katalogu stały Krótka składnia Jest:

:

Ścieżka hosta może być względna (do pliku kompozycji dokera) lub ścieżką bezwzględną, podczas gdy punkt montażowy wewnątrz pojemnika musi być określony w bezwzględnej formie.

A Nazwany tom to coś innego: jest to właściwe Tom Docker używane do trwałości i na ogół ma być preferowane nad mocowaniem wiązania, ponieważ nie zależy od struktury pliku hosta (jedna z wielu zalet kontenerów, to ich przenośność). Składnia do użycia w celu odniesienia się do a Nazwany tom Wewnątrz definicji usługi jest:

:

A Nazwany tom Cykl życia jest niezależny od cyklu, który go używa i musi być zadeklarowany w wolumeny sekcja pliku kompozycji Docker, jak zobaczymy za chwilę.

Powrót do definicji usługi teraz. Ostatnie słowo kluczowe, którego użyliśmy środowisko: Pozwala nam ustawić niektóre zmienne środowiskowe, które wpłyną na zachowanie usługi. Najpierw użyliśmy Tz Aby określić naszą strefę czasową bazy danych: w tym przypadku użyłem „Europa/Rzym”. Nazwy innych zmiennych mówią wszystko o ich celu: używając ich, ustawiamy ważne szczegóły jako nazwę domyślnej bazy danych do utworzenia (testDB), użytkownika do utworzenia i jego hasła. Ustawiamy również hasło użytkownika root i postanowiliśmy nie dopuszczać pustych haseł.



Sekcja woluminów

W tej sekcji musimy zadeklarować Nazwany tom Odnieśliśmy się od Mariadb Definicja serwera:

Wolume: Mariadb: 
Kopiuj

Na koniec tak będzie wyglądać nasz plik w całości:

Wersja: „3” Usługi: PHP-Apache: obraz: PHP: 7.2.Porty 1 -apache: - 80:80 Wolume: - ./DocumentRoot:/var/www/html: z linki: - „Mariadb” Mariadb: obraz: Mariadb: 10.1 tomy: - mariadb:/var/lib/mysql środowisko: tz: "Europe/rome" mysql_allow_empty_password: "no" mysql_root_password: "rootpwd" mysql_user: 'testuser' mysql_password: 'testPassword' mysql_databe 
Kopiuj

Naprawdę ważne jest, aby szanować wgłębienie, aby plik można poprawnie interpretować.

Zbudujmy nasze środowisko

Po określaniu wszystkich instrukcji dla naszych usług możemy korzystać z Komposowanie dokera polecenie ich zbudowania. Polecenie musi być wykonane w tym samym katalogu, w którym Kompozycja dokera.yml Plik znajduje się:

# Docker-Compose Up

Kilka minut i będziemy gotowi do pracy. Na koniec, jeśli wszystko poszło dobrze, nawigując do Lokalny Gospodarz Na naszym hoście zobaczymy wyjście skryptu PHP, który umieściliśmy w środku DocumentRoot:

Nasze środowisko lamp jest teraz gotowe do użycia.

Zamykanie myśli

Widzieliśmy, jak stworzyć podstawowy LAMPA środowisko, korzystając z Docker i organizując kontenery i usługi z Kompozycja dokera. Konfiguracja, której używaliśmy, koncentruje się na rozwoju i może być dalej rozszerzona i poprawiona, aby dopasować się do różnych potrzeb: Docker Dokumentacja To bardzo dobrze napisane źródło, które możesz skonsultować, aby rozszerzyć swoją wiedzę Docker. Nie wahaj się zostawić komentarz do wszelkich wątpliwości lub pytań.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak utworzyć stos lampy na bazie Dockera za pomocą Dockera na…
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
  • Ubuntu 20.04 Przewodnik
  • Ubuntu 20.04 Hadoop
  • 8 najlepszych środowisk stacjonarnych Ubuntu (20.04 FOSSA…
  • Lista klientów FTP i instalacja na Ubuntu 20.04 Linux…
  • Jak połączyć się z kontenerem Docker za pośrednictwem SSH
  • Jak zainstalować stos lampy na Almalinux