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