Dockeriserende LEMP Stack med Docker-Komponere på Ubuntu

Dockeriserende LEMP Stack med Docker-Komponere på Ubuntu

Docker-Compose er et kommandolinjeværktøj til at definere og styre multi-container docker applikationer. Compose er et python script, det kan installeres med pip kommandoen let (pip er kommandoen for at installere Python software fra python pakke lageret). Med komponere kan vi køre flere dockerbeholdere med en enkelt kommando. Det giver dig mulighed for at oprette en container som en tjeneste, der er fantastisk til dit udviklings-, test- og staging-miljø.

I denne vejledning vil jeg guide dig trin for trin for at bruge docker-komponere til at oprette et LEMP Stack-miljø (LEMP = Linux - Nginx - MySQL - PHP). Vi kører alle komponenter i forskellige Docker containere, vi opretter en Nginx container, PHP container, PHPMyAdmin container og en MySQL / MariaDB container.

Forudsætninger

  • Ubuntu server 16.04 -64bit
  • Root privilegier

Trin 1 - Installer docker

I dette trin installerer vi Docker. Docker er tilgængelig i Ubuntu-depotet, opdater bare dit depot og installer det derefter.

Opdater ubuntu repository og opgradere:

sudo apt-get opdatering sudo apt-get opgradering

Installer nyeste Docker fra ubuntu repository.

sudo apt-get install -y docker.io

Start docker og aktiver den til at starte ved opstartstidspunktet:

systemctl start docker
systemctl enable docker

Docker-tjenesterne kører.

Derefter kan du prøve at bruge docker med kommandoen nedenfor for at teste den:

docker køre hej verden

Hej verden fra docker.

Hej Docker

Trin 2 - Installer Docker-Compose

I det første trin har vi allerede installeret Docker. Nu vil vi installere docker-compose.

Vi har brug for python-pip til komponentinstallationen, installer python og python-pip med apt:

sudo apt-get install -y python python-pip

Når installationen er færdig, skal du installere docker-komponere med pip-kommandoen.

pip installation docker-komponere

Check nu docker-compose versionen:

docker-compose-version

Docker-compose er blevet installeret.

Installer Docker komponere på Ubuntu

Trin 3 - Opret og konfigurer dockermiljøet

I dette trin vil vi bygge vores docker-compose miljø. Vi bruger en ikke-root-bruger, så vi skal oprette brugeren nu.

Tilføj en ny bruger ved navn 'hakase'(vælg dit eget brugernavn her, hvis du kan lide):

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

Dernæst tilføj den nye bruger til 'havnearbejder'gruppe og genstart docker.

usermod -a -G docker hakase
sudo systemctl genstart docker

Nu brugerens 'hakase'kan bruge docker uden sudo.

Dernæst log ind på 'hakase'-brugeren med su fra root-brugeren.

suhakase

Opret en ny mappe til komponentmiljøet.

mkdir lemp-compose /
cd lemp-compose /

Dette er vores docker-compose miljø, alle filer, der skal være i Docker-beholderen, skal være i denne mappe. Når vi bruger docker-compose, har vi brug for en .yml-fil med navnet 'havnearbeider-compose.yml«.

I mappen 'lemp-compose' skal du oprette nogle nye mapper og en docker-compose.yml-fil:

touch docker-compose.yml
mkdir -p {logs, nginx, public, db-data}

  • logs: Katalog for Nginx logfiler.
  • Nginx: indeholder Nginx konfiguration som virtuel vært mv
  • offentlige: mappe til webfiler, index.html og PHP info-fil.
  • db-data: MariaDB datakatalog volumen.

Opret logfilerne error.log og access.log i 'logs'mappe.

touch logs / {error, access} .log

Opret en ny nginx virtuelle værtskonfigurationsfil i 'Nginx'mappe:

vim nginx / app.conf

Indsæt konfiguration nedenfor:

opstrøms 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; indeks index.php index.html; placering / {try_files $ uri $ uri / /index.php?$args; } placering ~ .php $ {inkludere fastcgi.conf; fastcgi_intercept_errors on; fastcgi_pass php; } placering ~ *. (js | css | png | jpg | jpeg | gif | ico) $ {udløber max; log_not_found off; }}

Gem filen og afslut vim.

Opret en ny index.html fil og PHP info fil i 'offentlige'mappe.

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

Nu kan du se miljøkatalogen som vist nedenfor:

træ

Docker komponere projektmiljø

Trin 4 - Konfiguration af docker-compose.yml-filen

I det foregående trin har vi oprettet de mapper og filer, der er nødvendige for vores containere. I dette trin ønsker vi at redigere filen 'havnearbeider-compose.yml'. I docker-compose.yml-filen definerer vi vores tjenester til LEMP-stakken, basisbillederne for hver container og dockervolumen.

Log ind på 'hakase'bruger og rediger havnearbeider-compose.yml fil med vim:

suhakase
cd lemp-compose /
vim docker-compose.yml

- Definer Nginx-tjenester

Indsæt nginx-konfigurationen herunder:

nginx: image: 'bitnami / nginx' porte: - '80: 80' links: - phpfpm volumener: - ./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

I den konfiguration har vi allerede defineret:

  • Nginx: service navn
  • billede: vi bruger 'BitNami / nginx'docker billeder
  • porte: udsæt beholderport 80 til værtsporten 80
  • links: links 'Nginx'service container til'phpfpm'beholder
  • mængder: Monter lokale mapper til containeren. Monter logfilfilkataloget, monter Nginx-virtuelle værtskonfigurationen og monter web-rootkatalogen.

- Definer PHP-fpm-tjenester

Indsæt konfigurationen under Nginx-blokken:

phpfpm: image: 'bitnami / php-fpm' porte: - '9000: 9000' volumener: - ./public:/myapps

Vi definerede her:

  • phpfpm: Definer servicenavnet.
  • billede: Definer basisbillede for phpfpm-tjenesten med 'BitNami / php fpm'billede.
  • porte: Vi kører PHP-fpm med TCP port 9000 og udsætte havnen 9000 til værten.
  • mængder: Monter web rodmappen 'offentlige' til 'MyApps'på beholderen.

- Definer MySQL-tjenesten

I den tredje blok indsætter du nedenstående konfiguration for MariaDB servicebeholderen:

mysql: image: 'mariadb' porte: - '3306: 3306' volumener: - ./db-data:/var/lib/mysql miljø: - MYSQL_ROOT_PASSWORD = hakase-labs123

Her kan du se, at vi bruger:

  • mysql: Som servicenavn.
  • billede: Beholderen er baseret på 'mariadb'docker billeder.
  • porte: service container ved hjælp af port 3306 til MySQL-forbindelse og udsætte det for værten på porten 3306 .
  • mængder: db-data mappe mysql
  • miljø: Indstil miljøvariablen 'MYSQL_ROOT_PASSWORD'for mysql root-adgangskoden til dockerbillederne, der udføres, når du bygger beholderen.

- konfiguration af PHPMyAdmin-tjenester

Den sidste blok, indsæt nedenstående konfiguration:

phpmyadmin: image: 'phpmyadmin / phpmyadmin' genstart: altid porte: - '8080: 80' links: - mysql: mysql miljø: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: hakase-labs123 PMA_HOST: mysql

Vi bruger et "phpmyadmin" docker image, kortlægning container port 80 til 8080 på værten, link beholderen til mariadb container, sæt genstart altid og indstil nogle miljøvariabler i dockerbilledet, herunder sæt 'PMA_HOST«.

Gem filen og afslut vim.

Du kan se hele eksemplet på github.

Trin 5 - Kør docker-komponere

Nu er vi klar til at køre docker-compose. Bemærk: Når du vil køre docker-compose, skal du være i dokker-komponere projektmappen og sørg for, at der er en yml-fil med komponentkonfigurationen.

Kør kommandoen nedenfor for at spinde LEMP-stakken op:

docker-compose -d

-d: kører som dæmon eller baggrund

Du vil se resultatet, at de nye containere er blevet oprettet, tjek det med kommandoen nedenfor:

docker-komponere ps

running docker-compose

Nu har vi fire containere, der kører Nginx, PHP-fpm, MariaDB og PHPMyAdmin.

Trin 6 - Testing

Kontrol af porte, der bruges af docker-proxy på værten.

netstat -plntu

alle dockerporte kortlagt til vært

Vi kan se port 80 for Nginx-containeren, port 3306 til MariaDB-containeren, port 9000 for php-fpm-beholderen og port 8080 for PHPMyAdmin-containeren.

Åbn port 80 fra webbrowseren, og du vil se vores index.html-fil.

http://serverip-address/

nginx docker container er arbejde

Sørg for, at PHP-fpm kører, få adgang til det fra webbrowseren.

http://serverip-address/info.php

php-fpm dockerbeholder arbejder

Få adgang til MySQL-beholderen i MySQL-shell.

docker-komponere exec mysql bash
mysql -u rod-p
TYPE MYSQL PASSWORD: hakase-labs123

Opret nu en ny database:

opret database hakase_db;
frakørsel

MariaDB mysql skalbeholder er tilgængelig, og vi har oprettet en ny database 'hakase_db«.

få adgang til mysql shell docker container

Dernæst få adgang til PHPMyAdmin på port 8080: http://serverip-address:8080/.

Du vil se PHPMyAdmin login side, skriv bare brugernavn 'rod'og adgangskoden er'hakase-labs123«.

phpmyadmin dockerbeholder

Du bliver automatisk forbundet til mysql-containeren, der er defineret i PMA_HOST miljøvariabel.

Klik på 'Go'og du vil se phpmyadmin dashboardet, der er forbundet til'mysql'beholder.

phpmyadmin og mysql docker container arbejder

Succes! LEMP Stack kører under en docker-compose setup, der består af fire containere.

Reference

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

Kilde

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.