Sett opp en lampeserver med Docker

Sett opp en lampeserver med Docker
I denne artikkelen skal jeg vise deg hvordan du bruker Docker -komponering for å lage en LAMP -server for PHP Web Development. Så la oss komme i gang.

Krav:

For å følge denne artikkelen, må du ha Docker installert på datamaskinen din. Linuxhint har mange artikler som du kan følge for å installere Docker på ønsket Linux -distribusjon hvis du ikke har den installert allerede. Så husk å sjekke Linuxhint.com i tilfelle du har problemer med å installere docker.

Installere Docker Compose:

Du kan laste ned Docker Compose Binary File veldig enkelt med følgende kommando:

$ sudo curl -l "https: // github.com/docker/kompose/utgivelser/nedlasting/1.24.1/
Docker-Compose-$ (Uname -s)-$ (Uname -m) "-o/usr/local/bin/docker-compose

MERK: krøll kan ikke installeres på Linux -distribusjonen din. Hvis det er tilfelle, kan du installere Curl med følgende kommando:

Ubuntu/Debian/Linux Mint:

$ sudo apt install curl -y

Centos/RHEL/Fedora:

$ sudo dnf install curl -y

En gang Docker-Compose Binærfil lastes ned, kjør følgende kommando:

$ sudo chmod +x/usr/local/bin/docker-compose

Nå, sjekk om Docker-Compose Kommandoen fungerer som følger:

$ Docker-Compose-versjon

Den skal skrive ut versjonsinformasjonen som vist på skjermdumpen nedenfor.

Sette opp Docker -komponering for prosjektet:

Lag nå en prosjektkatalog ~/docker/lampe (La oss si) og en html/ Katalog i prosjektkatalogen for å holde nettstedfilene (i.e. PHP, HTML, CSS, JS etc.) følgende:

$ mkdir -p ~/docker/lamp/html

Naviger nå til prosjektkatalogen ~/docker/lampe følgende:

$ cd ~/docker/lampe

Lage en PHP.Dockerfile I prosjektkatalogen ~/docker/lampe. Dette er en Dockerfile som muliggjør MySQLI og PDO PHP -utvidelser i PHP: 7.4.3-Apache Bilde fra Docker Hub og bygger et tilpasset Docker -bilde fra det.

Innholdet i PHP.Dockerfile er gitt nedenfor.

Fra PHP: 7.4.3-Apache

LØPE

Docker-php-ext-install mysqli pdo pdo_mysql

Nå, lage en Docker-Compose.Yaml fil i prosjektkatalogen ~/docker/lampe og skriv inn følgende linjer i Docker-Compose.Yaml fil.

Versjon: "3.7 "
tjenester:
Internett server:
bygge:
DockerFile: PHP.Dockerfile
kontekst: .
Start på nytt: Alltid
Volum:
- ""./html/:/var/www/html/"
Porter:
- "8080: 80"
mysql-server:
Bilde: MySQL: 8.0.19
Start på nytt: Alltid
miljø:
Mysql_root_password: hemmelighet
Volum:
- mysql-data:/var/lib/mysql
phpmyadmin:
Bilde: phpmyadmin/phpmyadmin: 5.0.1
Start på nytt: Alltid
miljø:
PMA_HOST: mysql-server
PMA_USER: ROOT
PMA_Password: Hemmelighet
Porter:
- "5000: 80"
Volum:
mysql-data:

De Docker-Compose.Yaml filen skal se ut som følger.

Her har jeg opprettet 3 tjenester Internett server, mysql-server og phpmyadmin.

Internett server Tjenesten vil kjøre et spesialbygget Docker-bilde som definert i PHP.Dockerfile.

mysql-server tjenesten vil kjøre MySQL: 8.0.19 Bilde (fra Dockerhub) i en Docker -beholder.

phpmyadmin tjenesten vil kjøre phpmyadmin/phpmyadmin: 5.0.1 Bilde (fra Dockerhub) i en annen Docker -container.

I mysql-server Service, The Mysql_root_password miljøvariabel brukes til å stille inn rot Passord for MySQL.

I phpmyadmin Service, The PMA_HOST, PMA_USER, PMA_PASSWORD Miljøvariabler brukes til å angi henholdsvis MySQL -vertsnavn, brukernavn og passord som phpmyAdmin vil bruke for å koble til MySQL -databaseserveren som kjører som mysql-server service.

I mysql-server service, alt innholdet i /var/lib/mysql Katalogen vil bli lagret permanent i mysql-data volum.'

I Internett server Service, containerporten 80 (til høyre) er kartlagt til Docker -vertsporten 8080 (venstre).'

I phpmyadmin Service, containerporten 5000 (til høyre) er kartlagt til Docker -vertsporten 80 (venstre).

Også lage en indeks.PHP fil i html/ Katalog for testing av LAMP -serveren.

Innholdet i indeks.PHP fil i mitt tilfelle,

$ host = "mysql-server";
$ bruker = "root";
$ pass = "hemmelighet";
$ db = "app1";
prøv
$ conn = new PDO ("mysql: host = $ host; dbname = $ db", $ bruker, $ pass);
$ conn-> setAttribute (pdo :: attr_errmode, pdo :: errmode_exception);
ekko "tilkoblet vellykket";
fangst (pDoException $ e)
Ekko "-forbindelse mislyktes:" . $ e-> getMessage ();

?>

Endelig prosjektkatalogen ~/docker/lampe skal se ut som følger:

Starter lampeserveren:

Nå, for å starte Internett server, mysql-server og phpmyadmin Tjenester, kjør følgende kommando:

$ docker -compose up -d

Alle tjenestene skal starte i bakgrunnen.

For å se hvordan portene er kartlagt, kjør følgende kommando:

$ Docker-Compose Ps

Som du kan se, for Internett server Service, Docker Host Port 8080 er kartlagt til containeren TCP -port 80.

For phpmyadmin Service, Docker Host Port 5000 er kartlagt til containeren TCP -port 80.

Finne IP -adressen til Docker -vert:

Hvis du vil få tilgang til LAMP -serveren fra andre datamaskiner i nettverket ditt, må du kjenne IP -adressen til Docker -verten din.

For å finne IP -adressen til Docker -verten din, kjør følgende kommando:

$ ip

I mitt tilfelle er IP -adressen til Docker -verten min 192.168.20.160. Det vil være annerledes for deg. Så sørg for å erstatte den med din fra nå av.

Testing av lampeserveren:

Nå kan du få tilgang til PHPMyAdmin 5 og webserveren fra en nettleser.

For å få tilgang til phpmyadmin 5, åpne en nettleser og besøk http: // localhost: 5000 fra Docker -verten din eller besøk http: // 192.168.20.160: 5000 fra hvilken som helst annen datamaskin i nettverket.

phpmyadmin 5 bør laste inn nettleseren din.

Nå, lage en APP1 Mysql -database fra phpmyadmin.

Nå, besøk http: // localhost: 8080 fra Docker -verten din eller http: // 192.168.20.160: 8080 fra hvilken som helst annen datamaskin på nettverket ditt for å få tilgang til webserveren.

Du burde se Tilkoblet vellykket beskjed. Det betyr, PHP fungerer og MySQL -databaseserveren er tilgjengelig fra Internett server container. Så teknisk sett er lampeserveren fullt funksjonell.

Stopper lampeserveren:

Å stoppe Internett server, mysql-server og phpmyadmin Tjenester, kjør følgende kommando:

$ Docker-Compose Down

De Internett server, mysql-server og phpmyadmin Tjenester bør stoppes.

Rengjøring av MySQL Server -data:

Hvis du vil fjerne alle MySQL -databasedataene og innstillingene, må du fjerne mysql-data volum.

Du kan finne det faktiske navnet på volumet med følgende kommando:

$ docker volum ls

Du kan fjerne volumet lamp_mysql-data med følgende kommando:

$ docker volum rm lamp_mysql-data

Så det er slik du setter opp en lampeserver med Docker. Takk for at du leste denne artikkelen.

Som du kan se, er volumet du skal fjerne lamp_mysql-data.