Natrag na blog

Postavljanje Laravela, Nginxa i MySQL-a pomoću Docker Composea

Postavljanje Laravela, Nginxa i MySQL-a pomoću Docker Composea

Uvod

Kontinuirana integracija (CI) i kontinuirana isporuka (CD) trenutačno su neke od najpopularnijih tema u razvoju softvera. Kako bi se postigao CI/CD aspekt arhitekture softvera, razvojni programeri koriste kontejnere. Kontejneri su lagana, virtualizirana, prijenosna, softverski definirana okruženja. U kontejnerima se softver može izvoditi izolirano od ostalog softvera koji se izvodi na fizičkom računalu domaćinu. Fokus ovog vodiča je na korištenju platforme za kontejnere Docker za implementaciju i pokretanje web aplikacija. Docker pomaže pojednostaviti proces postavljanja stoga web poslužitelja. U ovom vodiču koristit ćemo LEMP stog za posluživanje Laravel aplikacije.

LEMP stog kombinira Linux kao operacijski sustav, Nginx kao web poslužitelj, MySQL kao bazu podataka i PHP jezik za skriptiranje i dinamičku obradu. Možete pratiti naš tutorial on how to install and configure a LEMP stack on Ubuntu. Laravel je jedan od vodećih PHP okvira za razvoj web aplikacija.

Docker nudi alat pod nazivom Docker Compose za definiranje procesa postavljanja docker kontejnera. Docker Compose omogućuje razvojnim programerima da definiraju infrastrukturu svoje aplikacije, usluge, volumene, mreže i sve ovisnosti u jednoj datoteci koja se zove docker-compose datoteka. Može upravljati s više Docker kontejnera putem svojih naredbi kao što su docker container create, docker container run itd.

U ovom vodiču naučit ćete kako implementirati Laravel web aplikaciju s Nginxom i MySQL-om unutar Docker kontejnera. Konfiguracije za cijeli stog bit će definirane unutar docker-compose datoteke, kao i druge konfiguracijske datoteke za PHP, MySQL i Nginx. Počnimo!

Prije svega

Korak 1: Preuzmite Laravel i instalirajte ovisnosti

Prvi korak je preuzimanje Laravel koda iz repozitorija. U stvarnim scenarijima možda imate svoj Laravel kod u nekom repozitoriju, npr. na GitHubu, Bitbucketu, GitLabu itd. Međutim, za potrebe ovog vodiča, klonirat ćemo najnoviju verziju iz službenog Laravel repozitorija na GitHub. Repozitorij dolazi s datotekom composer, upraviteljem ovisnosti na razini aplikacije za PHP. Budući da želimo da se sve izvodi unutar Docker kontejnera, instalirat ćemo ovisnosti pomoću Docker composer slike. To će nam također pomoći da izbjegnemo globalnu instalaciju composera na stvarnom računalu domaćinu. Zatim pokrenite svoj terminal.

Idite u svoj početni direktorij:

Unesite sljedeću naredbu za kloniranje repozitorija u direktorij pod nazivom laravel-web. Možete ga nazvati kako god želite. U vrijeme pisanja ovog repozitorija, kada pokrenemo ovu naredbu, ona povlači Laravel verziju 8. Kada pokrenete naredbu, vjerojatno ćete pronaći novu verziju:

Zatim prijeđite u direktorij u koji ste upravo klonirali repozitorij:

Unesite sljedeću naredbu za montiranje direktorija potrebnih vašoj laravel aplikaciji pomoću Dockerove composer image:

Zastavice -v i –rm u naredbi docker run stvaraju efemerni kontejner koji će biti povezan s trenutnim direktorijem prije nego što bude uklonjen. Naredba kopira sadržaj ~/laravel-web u kontejner i osigurava da se mapa vendor koju je stvorio composer kopira natrag u trenutni direktorij.

Sada trebate promijeniti vlasništvo nad direktorijem laravel-web na ne-root korisnika. To će vam omogućiti rad s kodom vaše aplikacije kao ne-root korisnik i pokretanje procesa unutar spremnika u sljedećim koracima. Unesite sljedeću naredbu za promjenu vlasništva:

Vaš kod aplikacije sada je na mjestu. Direktorij je u vlasništvu ne-root korisnika, pa možete nastaviti s definiranjem usluga aplikacije u datoteci docker-composer.

Korak 2: Izrada Docker Compose datoteke

Docker Compose pojednostavljuje proces izgradnje i implementacije aplikacije. Nakon što definirate konfiguracije i usluge, možete jednostavno implementirati svoju aplikaciju na bilo koje glavno računalo koje ima instaliran Docker i Docker Compose bez brige o ovisnostima aplikacije. Što je najvažnije, to možete učiniti sa samo jednom Docker Compose naredbom, kao što ćemo vidjeti u Koraku 9.

U ovom koraku definirat ćete Docker Compose datoteku s konfiguracijama za web poslužitelj, bazu podataka i usluge aplikacije potrebne za implementaciju Laravel aplikacije.

Docker Compose datoteke su YAML datoteke spremljene s ekstenzijom .yml. Imajte na umu da je ispravno uvlačenje potrebno za valjanu Docker Compose datoteku. Unesite sljedeću naredbu za stvaranje i otvaranje datoteke pomoću nano za uređivanje:

Zatim ćete u ovoj datoteci definirati tri usluge: app, webserver i db. Odjeljak db definira vjerodajnice baze podataka za vašu aplikaciju, stoga svakako odaberite jaku mysql_root_password i zamijenite je u tom odjeljku. Kopirajte i zalijepite sljedeći kod:

U nastavku slijede objašnjenja definicija usluga iz gornjeg koda:

  • app: Definira Laravel aplikaciju i pokreće prilagođenu Docker sliku, cloudsigma.com/php, koju ćemo definirati u Koraku 4. Također postavlja working_dir u spremniku na /var/www/html.
  • webserver: Preuzima nginx:alpine sliku s Dockera i izlaže portove 80 i 443.
  • db: Preuzima mysql:5.7.32 sliku s Dockera i definira nekoliko varijabli okruženja. To uključuje bazu podataka pod nazivom laravel_web za aplikaciju i root lozinku za bazu podataka. Možete preimenovati bazu podataka imenom po vašem izboru. Ne zaboravite zamijeniti MYSQL_ROOT_PASSWORD svojstvo jakom lozinkom. Ova usluga također mapira port 3306 na domaćinu na port 3306 na spremniku.

Svojstvo container_name u svakom servisu definira naziv za kontejner koji odgovara tom servisu. Ako ne definirate to svojstvo, Docker odabire nasumični naziv za svaki kontejner.

Svojstvo networks definira bridge mrežu pod nazivom app-network koja olakšava komunikaciju između kontejnera. Bridge mrežom upravlja softverski most koji dopušta komunikaciju samo između kontejnera na istom mrežnom mostu. Softverski kontroler mosta instalira upravljačke programe koji sprječavaju izravnu komunikaciju kontejnera na različitim bridge mrežama. To osigurava visoku razinu sigurnosti jer samo povezani servisi mogu izravno komunicirati. Možete odabrati definiranje više servisa i mreža koje se povezuju s povezanim funkcijama.

Korak 3: Kako trajno spremiti podatke

Vaša web aplikacija obrađivat će i posluživati podatke vašim korisnicima. U ovom koraku vodit ćemo vas kroz definiranje volumena i bind montiranja za definicije vaših servisa kako biste trajno spremili podatke aplikacije. Docker nudi nevjerojatne značajke kao što su bind montiranja i volumeni za trajno spremanje podataka i spremanje konfiguracijskih datoteka aplikacije. Koristit ćemo ih pri postavljanju naše Laravel aplikacije s Dockerom.

Volumeni su poželjniji iz raznih razloga, uključujući ponudu sigurnosnih kopija i trajno spremanje podataka nakon životnog ciklusa kontejnera. Bind montiranja obično upućuju na stvarni direktorij na host računalu. Kada stvorite volumen, stvara se novi direktorij unutar Dockerovog direktorija za pohranu kojim upravlja Docker. Kada stvorite bind montiranje, datoteka ili direktorij unutar host računala montira se u kontejner (referenciran svojom apsolutnom putanjom). To je ključno za našu web aplikaciju jer kada unesete promjene u kod na host računalu, one će odmah postati dostupne kontejneru.

Budite oprezni pri korištenju bind montiranja. Procesi koji se izvode unutar Docker kontejnera mogu unositi promjene u datotečni sustav hosta i utjecati na procese koji se ne izvode u Dockeru na host sustavu. Iako su Docker montiranja moćna značajka, budite svjesni ovih sigurnosnih implikacija.

Nakon što smo to rekli, pogledajmo kako možemo koristiti ove dvije značajke u našem postavljanju. Prvo ćemo definirati volumen za trajno spremanje MySQL baze podataka. U Docker Compose datoteci koju smo stvorili, pod servisom db, dodajte svojstvo volumes kako je istaknuto u nastavku:

Kao što je definirano, volumen dbdata trajno će spremiti sadržaj /var/lib/mysql. Olakšava sigurnosno kopiranje i omogućuje ponovno pokretanje servisa bez gubitka podataka. Zatim biste trebali dodati definiciju volumena na kraj Docker Compose datoteke kako bi bila dostupna u svim servisima. Unesite sljedeći isječak koda na dno datoteke:

Za povezivanje s MySQL bazom podataka morate unijeti vjerodajnice. Da biste to učinili, definirajte bind montiranje dodavanjem sljedećeg istaknutog isječka koda u servis db pod svojstvom volumes:

Kod povezuje ~/laravel-web/mysql/my.cnf s /etc/mysql/my.cnf u kontejneru. Povezana datoteka je konfiguracijska datoteka za MySQL koju ćemo stvoriti u Koraku 7.

Kontejner mora koristiti Nginx poslužitelj za posluživanje koda vaše aplikacije. Stoga ćemo u tu svrhu definirati dva bind montiranja (jedno za Nginx konfiguracijsku datoteku i jedno za kod aplikacije) pod servisom webserver. Dodajte sljedeći isječak koda za definiciju volumena pod servisom webserver:

Ova linija – ./:/var/www/html povezuje kod aplikacije u direktoriju ~/laravel-web s direktorijem /var/www/html unutar spremnika. Za drugo povezivanje (bind mount), konfiguracijska datoteka za Nginx bit će kreirana na ~/laravel-web/nginx/conf.d/. Bit će montirana na /etc/nginx/conf.d/ unutar spremnika. Stoga možete ažurirati konfiguracijsku datoteku na host računalu prema potrebi. Kreirat ćemo Nginx conf datoteku u Korak 6.

Kako bi se promjene u kodu automatski odrazile u spremniku, povezujemo kod aplikacije sa spremnikom (bind mount). To ubrzava proces implementacije. Stoga dodajte sljedeći istaknuti isječak koda u uslugu app:

Druga linija povezuje php konfiguracijsku datoteku, koju ćemo kreirati u Korak 5 unutar datoteke ~/laravel-web/php/laravel.ini s /usr/local/etc/php/conf.d/laravel.ini unutar spremnika.

Vaša kompletna Docker Compose datoteka sada bi trebala izgledati ovako:

Ako sve izgleda u redu, pritisnite Ctrl + O za spremanje datoteke. Zatim pritisnite Ctrl + X za izlazak iz uređivača. U ovom trenutku trebali biste moći izgraditi prilagođenu Docker sliku za svoju aplikaciju pomoću Docker Compose datoteke.

Korak 4: Kreirajte Dockerfile

Dockerfile sadrži upute koje Docker može koristiti za izgradnju prilagođenih Docker slika. Također može instalirati potreban softver i konfigurirati potrebne postavke za vašu aplikaciju. One specificiraju okruženje unutar spremnika koje će ugostiti kod vaše aplikacije. Slike koje kreirate možete poslati na docker hub radi dijeljenja ili ih postaviti u druge privatne registre.

Stvorit ćemo Dockerfile koji će specificirati upute za izgradnju slike Laravel aplikacije. Koristite nano za stvaranje Dockerfile-a u ~/laravel-web direktoriju:

U otvorenom uređivaču dodajte sljedeći kod:

Dockerfile prvo stvara sliku temeljenu na php:7.4-fpm Docker slici. Ovo je slika temeljena na Debianu s instaliranom PHP FastCGI implementacijom (PHP-FPM ). Kako bi Laravel ispravno radio, potrebna su mu druga php proširenja poput mcrypt, pdo_mysql, mbstring i imagick, koja skripta instalira. Zatim instalira composer upravitelj php paketima. Kontejner će ga koristiti za instalaciju Laravel php ovisnosti.

Možete koristiti direktivu RUN za definiranje naredbi kao što su instalacija, ažuriranje i konfiguriranje postavki unutar kontejnera. Također dodjeljuje korisnička dopuštenja. Direktiva WORKDIR specificira radni direktorij, u ovom slučaju /var/www/html. Skripta pokreće naredbu CHOWN za dodjelu dopuštenja direktorija /var/www/html korisniku www-data.

Prije konačne izgradnje slike, port mora biti izložen kako bi se omogućio pristup aplikaciji koja se izvodi unutar kontejnera. Naredba EXPOSE izlaže port, 9000, za php-fpm poslužitelj. Posljednja naredba za pokretanje je direktiva CMD. Ona pokreće php-fpm za pokretanje poslužitelja.

Sada možete pritisnuti Ctrl + O za spremanje datoteke. Zatim pritisnite Ctrl + X za izlazak iz uređivača.

Korak 5: Konfigurirajte PHP

U ovom koraku konfigurirat ćemo php uslugu za obradu dolaznih zahtjeva iz Nginxa. Stvorit ćete datoteku laravel.ini unutar php direktorija. Ova datoteka će sadržavati PHP konfiguracije. To je datoteka koju ste montirali povezivanjem na /usr/local/etc/php/conf.d/laravel.ini u spremniku u koraku 3. Konfiguracije u ovoj datoteci nadjačavaju zadanu datoteku php.ini koju PHP obično čita pri pokretanju. Unesite sljedeću naredbu za stvaranje php direktorija:

Stvorite i otvorite datoteku laravel.ini unutar php direktorija unosom sljedeće naredbe:

Zadana php.ini datoteka ima ograničenje učitavanja postavljeno na 2M. Kao primjer, pokazat ćemo vam kako prilagoditi i postaviti php konfiguracije promjenom vrijednosti dopuštenog ograničenja učitavanja, u slučaju da želite učitati veće datoteke. Unesite sljedeće retke koda unutar datoteke:

Ovo postavlja ograničenje učitavanja i možete učitavati datoteke ukupne veličine ne veće od 80 MB. Možete dodati druge php konfiguracije unutar datoteke laravel.ini kako biste nadjačali zadane php konfiguracije. Sada spremite i zatvorite datoteku.

Korak 6: Konfiguriranje Nginxa

U ovom koraku konfigurirat ćemo Nginx da koristi php uslugu koju smo ranije definirali. Koristit će PHP-FPM kao FastCGI poslužitelj za posluživanje dinamičkog sadržaja. FastCGI poslužitelj je softver koji omogućuje interaktivnim programima povezivanje s web poslužiteljem.

Kao što smo definirali u docker-compose datoteci u koraku 3, stvorit ćemo Nginx konfiguracijsku datoteku app.conf unutar direktorija ~/laravel-web/nginx/conf.d/. Prvo unesite sljedeću naredbu za stvaranje direktorija:

Zatim stvorite i otvorite datoteku app.conf pomoću nano-a unosom sljedeće naredbe:

Dodajte sljedeći Nginx konfiguracijski kod u datoteku:

Nginx čita konfiguracijske datoteke zvane blokovi poslužitelja (server blocks) kako bi znao koji direktorij treba poslužiti posjetitelju web stranice na temelju URL-a. Da biste saznali više, pročitajte o postavljanju blokova poslužitelja u našem vodiču o instaliranju Nginxa na Ubuntu 18.04. Definirane direktive služe u sljedeće svrhe:

  • listen – Definira priključak na kojem će poslužitelj slušati dolazne zahtjeve, što je obično priključak 80.
  • error_log & access_log – Definira datoteke za zapisivanje dnevnika aplikacije.
  • root – Definira putanju korijenskog web direktorija (webroot), direktorija koji će posluživati sve zahtjeve upućene poslužitelju s interneta.

U bloku lokacije (location block) za php, direktiva fastcgi_pass specificira da usluga app sluša na TCP utičnici (socket) na priključku 9000 (što je definirano u Dockerfile-u). To usmjerava PHP-FPM poslužitelj da sluša preko mreže, a ne na Unix utičnici. Iako Unix utičnica može imati blagu prednost u brzini u odnosu na TCP utičnicu, nedostaje joj mrežni protokol pa preskače mrežni stog (network stack).

Unix utičnica bila bi prikladnija za scenarije u kojima se domaćini nalaze na jednom stroju. Međutim, ako imate usluge koje se izvode na različitim domaćinima, TCP utičnica ima prednost povezivanja usluga koje su distribuirane. U našem slučaju, spremnik aplikacije se izvodi na drugom domaćinu od našeg spremnika web poslužitelja. Stoga je TCP utičnica najprikladnija za našu konfiguraciju.

Sada možete pritisnuti Ctrl + O kako biste spremili datoteku, a zatim pritisnuti Ctrl + X za izlazak iz uređivača. Promjene napravljene u direktoriju nginx/conf.d/ automatski će se odraziti u spremniku web poslužitelja zahvaljujući povezivanju koje ste dodali u Docker Compose datoteku u Korak 3.

Korak 7: Konfigurirajte MySQL

Nakon što smo konfigurirali Nginx za rad s PHP-om, sada možemo konfigurirati MySQL za pohranu i posluživanje dinamičkih podataka PHP-u. Već smo postavili Docker Compose datoteku za instalaciju potrebnih proširenja za komunikaciju između PHP-a i MySQL-a. Kreirat ćemo MySQL konfiguracijsku datoteku my.cnf unutar mape mysql, koja će biti povezana na /etc/mysql/my.cnf kao što smo definirali u odjeljku db usluge u Docker Composeu u Korak 3.

Postavke i promjene konfiguracije MySQL-a mogu se unijeti u datoteku my.cnf kad god želite. One bi se trebale odmah odraziti unutar spremnika. Prvo kreirajte direktorij unosom sljedeće naredbe:

Zatim kreirajte i otvorite nano unosom sljedeće naredbe:

Unesite sljedeći isječak koda kako biste omogućili zapisnik upita i odredili lokaciju datoteke zapisnika upita:

Definiranjem svojstva general_log kao 1, dopuštate opće zapisnike. Svojstvo general_log_file određuje lokaciju datoteke zapisnika. Pritisnite Ctrl + O za spremanje datoteke, a zatim pritisnite Ctrl + X za izlazak iz uređivača.

Korak 8: Postavite varijable okruženja za Laravel

Do ove točke, sve usluge i konfiguracijske postavke su dovršene. Stoga bismo mogli implementirati naše spremnike. Međutim, postoji važan korak koji se mora izvršiti prije nego što naša web aplikacija zapravo postane upotrebljiva – varijable okruženja. Laravel radni okvir očekuje datoteku pod nazivom .env koju koristi za definiranje svog okruženja. Prema zadanim postavkama, Laravel dolazi s datotekom .env.example koju možete kopirati u .env, a zatim izmijeniti varijable sa svojim stvarnim podacima. Unesite sljedeću naredbu za kopiranje datoteke:

Nakon što je kopirana, otvorite datoteku pomoću nano uređivača za izmjenu:

Evo snimke zaslona kako bi datoteka mogla izgledati:

screenshot of what the file

U datoteci, sljedeći korak je izmjena varijabli pod blokom DB_CONNECTION kao što ste postavili u ranijim konfiguracijama koje smo do sada napravili. Ažurirajte na sljedeći način:

  • DB_HOST je db spremnik baze podataka.
  • DB_DATABASE je laravel_web.
  • DB_USERNAME je korisničko ime za bazu podataka. Odaberite ime po svom izboru, ali za potrebe ovog vodiča, idemo s laraveldocker.
  • DB_PASSWORD je jaka lozinka koju će vaš gore navedeni korisnik koristiti za prijavu u bazu podataka, stoga odaberite jaku lozinku. U Koraku 10, kreirat ćemo ovog korisnika s lozinkom koju ovdje odaberete.

S ažuriranim vrijednostima, vaš DB_CONNECTION bi sada trebao izgledati ovako:

DB_CONNECTION

Spremite i zatvorite datoteku.

Korak 9: Pokrenite Docker spremnike

U ovoj fazi, sve vaše usluge i konfiguracije definirane su u Docker Compose datoteci. Potrebna je samo jedna naredba za pokretanje svih spremnika, stvaranje volumena, povezivanje mreža te postavljanje i izgradnju vaše aplikacije. Unesite sljedeću naredbu u svoj terminal:

Kada prvi put pokrenete naredbu docker-compose up, ona preuzima sve potrebne Docker slike. Ako postavljate infrastrukturu na svom lokalnom računalu, to može potrajati neko vrijeme. Nakon što se slike preuzmu, Compose stvara spremnike. Zastavica -d upućuje Docker da pokrene spremnike u pozadini. Ako se proces uspješno završi, u svom terminalu biste trebali vidjeti nešto poput ovoga:

terminal

Unesite sljedeću naredbu u svoj terminal kako biste izlistali sve pokrenute spremnike:

Trebalo bi se prikazati nešto poput snimke zaslona u nastavku, s detaljima o spremnicima app, webserver i db:

screenshot details

  • CONTAINER ID – Jedinstveni identifikator za svaki spremnik.
  • NAMES – Naziv usluge povezan sa svakim spremnikom, kako je definirano u Docker Compose datoteci. (Za pristup spremniku možete koristiti ID ili naziv spremnika).
  • IMAGE – Naziv slike za svaki spremnik.
  • STATUS – Prikazuje informacije o stanju spremnika (može biti zaustavljen, pokrenut ili se ponovno pokretati).
  • PORTS – Prikazuje portove koje spremnik izlaže.

Docker Compose nudi naredbu pod nazivom exec koju možete koristiti za pokretanje naredbi terminala ili pristup naredbenom retku unutar spremnika. Najprije želimo pokrenuti neke naredbe unutar spremnika app, što je spremnik u kojem se izvodi Laravel aplikacija.

Docker nudi naredbu za pristup naredbenom retku spremnika. Njezina je sintaksa sljedeća: docker-compose exec container_name bash. Za pristup naredbenom retku spremnika app unesite sljedeću naredbu:

Nakon što se nađete u naredbenom retku spremnika, možete pokrenuti neke Laravel Artisan konfiguracijske naredbe. Unesite sljedeću naredbu za generiranje laravel ključa i njegovo spremanje u .env datoteku:

S postavljenim ključem okruženja, možete pokrenuti sljedeću naredbu za predmemoriranje konfiguracijskih postavki:

Konfiguracije su pohranjene u datoteci /var/www/html/bootstrap/cache/config.php unutar spremnika. Možete pritisnuti Ctrl + D za izlaz iz terminala spremnika.

Kako biste potvrdili da je Laravel aplikacija implementirana i da radi, posjetite javni IP svog poslužitelja u pregledniku (http://your_server_public_ip). Trebali biste vidjeti stranicu dobrodošlice za novu instalaciju Laravela:

laravel screenshot

Korak 10: Konfiguriranje MySQL korisnika

U ovom koraku izradit ćemo korisnika baze podataka za MySQL bazu podataka laravel_web koju smo naveli u docker-compose datoteci. Kada ste pokrenuli naredbu za izgradnju spremnika u Step 9, MySQL je instaliran, ali je stvorio samo zadani administratorski račun root, koji ima neograničene privilegije na bazi podataka. Kako bismo izbjegli korištenje root korisnika, stvorit ćemo namjenskog korisnika, laraveldocker, kojeg ćemo koristiti za aplikaciju. To je korisnik kojeg ste naveli u varijablama okruženja u Step 8. Pristupite naredbenom retku unutar terminala unosom sljedeće naredbe:

Nakon što uđete u spremnik, prijavite se u MySQL unosom sljedeće naredbe:

Na upit za lozinku unesite lozinku koju ste postavili u db usluzi u docker-compose datoteci u Step 2.

Nakon što se prijavite u MySQL upit, provjerite vidite li bazu podataka koju ste naveli u docker-compose datoteci unosom sljedeće SQL naredbe:

Trebali biste vidjeti bazu podataka laravel_web ili bilo koji naziv koji ste odredili za svoje postavljanje:

Laravel

Zatim stvaramo korisnika i lozinku za bazu podataka laravel_web. To moraju biti isti podaci koje ste naveli u .env datoteci u Step 8. Unesite sljedeću naredbu za stvaranje korisnika i lozinke te dodjeljivanje svih privilegija ovom korisniku:

Kako bi promjene odmah stupile na snagu, unesite sljedeću naredbu za ispiranje privilegija:

Time je dovršena konfiguracija MySQL korisnika. Izađite iz MySQL naredbenog retka upisivanjem exit i pritiskom na enter. Na kraju, izađite iz db spremnika pritiskom na Ctrl + D.

Korak 11: Testiranje komunikacije između koda Laravel aplikacije i MySQL baze podataka

Do ovog koraka sve je radilo dobro. Međutim, želimo potvrditi da Laravel kod u app spremniku može komunicirati s MySQL bazom podataka u db spremniku. Prvo pristupite terminalu app spremnika unosom sljedeće naredbe:

Sljedeći korak je pokretanje laravel migration naredbe koja stvara tablice:

U svom terminalu trebali biste vidjeti proces migracije dok Laravel stvara zadane tablice:

migration process

Zatim ćemo testirati možemo li pristupiti bazi podataka iz Laravela. Laravel prema zadanim postavkama dolazi s Tinker alatom, koji vam omogućuje interakciju s cijelom aplikacijom iz naredbenog retka, uključujući pristup bazi podataka, pokretanje poslova, eloquent ORM, i više. Možemo koristiti Tinker za pregled podataka u tablici migracija. Unesite sljedeću naredbu za pristup Tinkeru:

Nakon što se nađete u Tinker naredbenom retku, možete izlistati tablice stvorene naredbom migrate unosom sljedećeg:

Snimka zaslona u nastavku prikazuje izlaz, a to su tablice koje se trenutno nalaze u bazi podataka laravel_web:

laravel_web database

Podatke u tablici možete dohvatiti navođenjem naziva tablice. Na primjer, podatke u tablici migrations možete dohvatiti unosom sljedeće naredbe:

Naredba ispisuje sljedeće:

comman output

Iz gornjeg izlaza, vaša Laravel aplikacija je dobro konfigurirana i može komunicirati s bazom podataka. Možete eksperimentirati s više naredbi poput stvaranja modela, pokretanja poslova i više. Možete izaći iz Tinker naredbenog retka pritiskom na Ctrl + D.

Zaključak

U ovom ste vodiču implementirali Laravel aplikaciju s LEMP stogom unutar Docker spremnika. Testirali ste aplikaciju pristupom web sučelju kao i povezivanjem s bazom podataka putem Laravel Tinkera. Mogli ste iskusiti moć Docker Composea. Omogućuje vam stvaranje grupe Docker spremnika definiranih u jednoj datoteci, koji se zatim mogu pokrenuti samo jednom naredbom.

Ako se želite dodatno upoznati sa spremnicima, pogledajte naš vodič koji vam pokazuje kako očistiti Docker resurse – slike, spremnike i volumene i naš detaljan pregled alata Kubernetes.

Možete posjetiti i naš blog za više informacija o Dockeru i kontinuiranoj integraciji i kontinuiranoj isporuci.

Sretno programiranje!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.