GNU/Linux >> Znalost Linux >  >> Ubuntu

Dockerizing LEMP Stack pomocí Docker-Compose na Ubuntu

Docker-Compose je nástroj příkazového řádku pro definování a správu vícekontejnerových dockerových aplikací. Compose je python skript, lze jej snadno nainstalovat pomocí příkazu pip (pip je příkaz pro instalaci softwaru Python z úložiště balíčků python). Pomocí compose můžeme spustit více kontejnerů dockerů pomocí jediného příkazu. Umožňuje vám vytvořit kontejner jako službu, která je skvělá pro vaše vývojové, testovací a pracovní prostředí.

V tomto tutoriálu vás krok za krokem provedu pomocí docker-compose k vytvoření prostředí LEMP Stack (LEMP =Linux - Nginx - MySQL - PHP). Všechny komponenty spustíme v různých kontejnerech Docker, nastavíme kontejner Nginx, kontejner PHP, kontejner PHPMyAdmin a kontejner MySQL/MariaDB.

Předpoklady

  • Server Ubuntu 16.04 – 64bit
  • Oprávnění uživatele root

Krok 1 – Instalace Dockeru

V tomto kroku nainstalujeme Docker. Docker je k dispozici v úložišti Ubuntu, stačí aktualizovat úložiště a poté jej nainstalovat.

Aktualizujte úložiště ubuntu a upgradujte:

sudo apt-get update
sudo apt-get upgrade

Nainstalujte nejnovější Docker z úložiště ubuntu.

sudo apt-get install -y docker.io

Spusťte docker a povolte jeho spuštění při spouštění:

systemctl start docker
systemctl enable docker

Služby Docker jsou spuštěny.

Dále můžete zkusit použít docker s příkazem níže k otestování:

docker run hello-world

Ahoj světe z dockeru.

Krok 2 – Instalace Docker-Compose

V prvním kroku jsme již nainstalovali Docker. Nyní nainstalujeme docker-compose.

Pro instalaci skládání potřebujeme python-pip, nainstalujte python a python-pip s apt:

sudo apt-get install -y python python-pip

Po dokončení instalace nainstalujte docker-compose pomocí příkazu pip.

pip install docker-compose

Nyní zkontrolujte verzi docker-compose:

docker-compose --version

Docker-compose byl nainstalován.

Krok 3 – Vytvoření a konfigurace prostředí Docker

V tomto kroku vytvoříme naše prostředí pro vytváření dockerů. Použijeme uživatele bez oprávnění root, takže tohoto uživatele musíme nyní vytvořit.

Přidat nového uživatele s názvem 'hakase ' (zde si vyberte své vlastní uživatelské jméno, pokud chcete):

useradd -m -s /bin/bash hakase
passwd hakase

Dále přidejte nového uživatele do 'dockeru a restartujte ukotvitelný panel.

usermod -a -G docker hakase
sudo systemctl restart docker

Nyní uživatel 'hakase ' může používat docker bez sudo.

Dále se z uživatele root přihlaste k uživateli 'hakase' pomocí su.

su - hakase

Vytvořte nový adresář pro prostředí pro vytváření zpráv.

mkdir lemp-compose/
cd lemp-compose/

Toto je naše prostředí docker-compose, všechny soubory, které mají být v kontejneru Docker, musí být v tomto adresáři. Když používáme docker-compose, potřebujeme soubor .yml s názvem 'docker-compose.yml '.

V adresáři 'lemp-compose' vytvořte několik nových adresářů a soubor docker-compose.yml:

touch docker-compose.yml
mkdir -p {logs,nginx,public,db-data}
  • protokoly :Adresář pro soubory protokolu Nginx.
  • nginx :obsahuje konfiguraci Nginx, jako je virtuální hostitel atd.
  • veřejné :adresář pro webové soubory, index.html a informační soubor PHP.
  • db-data :Objem datového adresáře MariaDB.

Vytvořte soubory protokolu error.log a access.log v 'protokolech ' adresář.

touch logs/{error,access}.log

Vytvořte nový konfigurační soubor virtuálního hostitele nginx v 'nginx ' adresář:

vim nginx/app.conf

Vložte konfiguraci níže:

upstream php {
        server phpfpm:9000;
}

server {

        server_name 193.70.36.50;

        error_log "/opt/bitnami/nginx/logs/myapp-error.log";
        access_log  "/opt/bitnami/nginx/logs/myapp-access.log";

        root /myapps;
        index index.php index.html;

        location / {

                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {

                include fastcgi.conf;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

Uložte soubor a ukončete vim.

Vytvořte nový soubor index.html a soubor s informacemi o PHP v 'veřejném ' adresář.

echo '<h1>LEMP Docker-Compose</h1><p><b>hakase-labs</b>' > public/index.html
echo '<?php phpinfo(); ?>' > public/info.php

Nyní můžete vidět adresář prostředí, jak je znázorněno níže:

tree

Krok 4 – Konfigurace souboru docker-compose.yml

V předchozím kroku jsme vytvořili adresáře a soubory potřebné pro naše kontejnery. V tomto kroku chceme upravit soubor 'docker-compose.yml '. V souboru docker-compose.yml definujeme naše služby pro zásobník LEMP, základní obrázky pro každý kontejner a svazky dockeru.

Přihlaste se do 'hakase ' a upravte soubor docker-compose.yml soubor s vim:

su - hakase
cd lemp-compose/
vim docker-compose.yml

- Definujte služby Nginx

Vložte konfiguraci nginx níže:

nginx:
    image: 'bitnami/nginx'
    ports:
        - '80:80'
    links:
        - phpfpm
    volumes:
        - ./logs/access.log:/opt/bitnami/nginx/logs/myapp-access.log
        - ./logs/error.log:/opt/bitnami/nginx/logs/myapp-error.log
        - ./nginx/app.conf:/bitnami/nginx/conf/vhosts/app.conf
        - ./public:/myapps

V této konfiguraci jsme již definovali:

  • nginx :název služby
  • obrázek :používáme 'bitnami/nginx ' obrázky docker
  • porty :vystavit kontejnerový port 80 na hostitelský port 80
  • odkazy :odkazy 'nginx ' servisní kontejner na 'phpfpm ' kontejner
  • objemy :připojení místních adresářů ke kontejneru. Připojte adresář souboru protokolů, připojte konfiguraci virtuálního hostitele Nginx a připojte webový kořenový adresář.

- Definujte služby PHP-fpm

Vložte konfiguraci pod blok Nginx:

phpfpm:
    image: 'bitnami/php-fpm'
    ports:
        - '9000:9000'
    volumes:
        - ./public:/myapps

Definovali jsme zde:

  • phpfpm :definujte název služby.
  • obrázek :definujte základní obrázek pro službu phpfpm pomocí „bitnami/php-fpm ' obrázek.
  • porty :Používáme PHP-fpm s TCP portem 9000 a vystavení portu 9000 k hostiteli.
  • objemy :připojte webový kořenový adresář 'public ' na 'moje aplikace “ na kontejneru.

- Definujte službu MySQL

Do třetího bloku vložte konfiguraci níže pro kontejner služby MariaDB:

mysql:
    image: 'mariadb'
    ports:
        - '3306:3306'
    volumes:
        - ./db-data:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=hakase-labs123

Zde můžete vidět, že používáme:

  • mysql :jako název služby.
  • obrázek :kontejner je založen na 'mariadb ' obrázky dockeru.
  • porty :servisní kontejner využívající port 3306 pro připojení MySQL a zpřístupněte jej hostiteli na portu 3306 .
  • objemy :db-data adresář mysql
  • životní prostředí :nastavte proměnnou prostředí 'MYSQL_ROOT_PASSWORD ' pro kořenové heslo mysql k obrazům dockeru, které se spustí při sestavování kontejneru.

- Konfigurace služeb PHPMyAdmin

Poslední blok, vložte konfiguraci níže:

phpmyadmin:
    image: 'phpmyadmin/phpmyadmin'
    restart: always
    ports:
       - '8080:80'
    links:
        - mysql:mysql
    environment:
        MYSQL_USERNAME: root
        MYSQL_ROOT_PASSWORD: hakase-labs123
        PMA_HOST: mysql

Používáme docker image 'phpmyadmin', mapující port kontejneru 80 na 8080 na hostiteli propojte kontejner s mariadb kontejner, nastavit restart vždy a nastavit některé proměnné prostředí obrazu dockeru, včetně sady 'PMA_HOST '.

Uložte soubor a ukončete vim.

Úplný příklad můžete vidět na github.

Krok 5 – Spusťte Docker-Compose

Nyní jsme připraveni spustit docker-compose. Poznámka:Pokud chcete spustit docker-compose, musíte být v adresáři projektu docker-compose a ujistěte se, že existuje soubor yml s konfigurací skládání.

Spuštěním příkazu níže roztočíte zásobník LEMP:

docker-compose up -d

-d: běžící jako démon nebo pozadí

Uvidíte výsledek, že nové kontejnery byly vytvořeny, zkontrolujte to příkazem níže:

docker-compose ps

Nyní máme čtyři kontejnery se systémem Nginx, PHP-fpm, MariaDB a PHPMyAdmin.

Krok 6 – Testování

Kontrola portů, které používá docker-proxy na hostiteli.

netstat -plntu

Můžeme vidět port 80 pro kontejner Nginx, port 3306 pro kontejner MariaDB, port 9000 pro kontejner php-fpm a port 8080 pro kontejner PHPMyAdmin.

Otevřete port 80 z webového prohlížeče a uvidíte náš soubor index.html.

http://adresa-serveru/

Ujistěte se, že běží PHP-fpm, otevřete jej z webového prohlížeče.

http://adresa-serveru/info.php

Přístup ke kontejneru MySQL v prostředí MySQL.

docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL PASSWORD: hakase-labs123

Nyní vytvořte novou databázi:

create database hakase_db;
exit

Mysql shell kontejner MariaDB je přístupný a vytvořili jsme novou databázi 'hakase_db '.

Dále přejděte do PHPMyAdmin na portu 8080:http://serverip-address:8080/.

Zobrazí se přihlašovací stránka PHPMyAdmin, stačí zadat uživatelské jméno 'root “ a heslo je „hakase-labs123 '.

Budete automaticky připojeni ke kontejneru mysql, který byl definován v PMA_HOST proměnná prostředí.

Klikněte na tlačítko Přejít “ a uvidíte panel phpmyadmin, který je připojen k 'mysql ' kontejner.

Úspěch! Zásobník LEMP běží v nastavení sestavování dockeru, které se skládá ze čtyř kontejnerů.

Odkaz

https://hub.docker.com/r/bitnami/nginx/

https://hub.docker.com/r/bitnami/php-fpm/

https://hub.docker.com/_/mariadb/

https://hub.docker.com/r/phpmyadmin/phpmyadmin/

https://docs.docker.com/compose/

https://github.com/yuzukiseo/hakase-labs/tree/master/lemp-compose


Ubuntu
  1. Jak nainstalovat WordPress s Dockerem na Ubuntu

  2. Jak nainstalovat WordPress pomocí zásobníku LEMP na Ubuntu 18.04

  3. Jak nainstalovat Magento 2.4 s LEMP Stack na Ubuntu 20.04

  1. Instalace zásobníku LEMP na Ubuntu 14.04

  2. Dockerizace Wordpressu pomocí Nginx a PHP-FPM na Ubuntu 16.04

  3. Jak nainstalovat ONLYOFFICE 8.9.0 s Dockerem na Ubuntu

  1. Dockerizace Laravelu pomocí Nginx MySQL a Docker Compose na Ubuntu 18.04 LTS

  2. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na Ubuntu 18.04

  3. Jak nainstalovat Nginx s PHP a MySQL (LEMP Stack) na Ubuntu 20.04 LTS