Jak utworzyć stos lampy na bazie Docker za pomocą Docker-Compose na Ubuntu 18.04 Bionic Beaver Linux
- 866
- 21
- Maria Piwowarczyk
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
- « Jak zainstalować niezgodę na Ubuntu 18.04 Bionic Beaver Linux
- Jak zresetować hasło root mysql na Ubuntu 18.04 Bionic Beaver Linux »