Docker development workflow pro PHP rubrika: Programování: PHP

5 PetrJirasek
položil/-a 25.12.2019

Ahoj,

hraju si s Dockerem pro lokalni development a uz jsem vicemene rozjel bezny azaklad apache + PHP + DB, jen ted premyslim, jak by mela fungovat vlastne inicializace aplikace ve smyslu spusteni composer install, vygenerovani testovaci databaze pres schema-tool v doctrine apod.

Kam tyhle commandy, ktere pripravi aplikaci pro lokalni development, by mely patrit? Patri do Dockerfile pro kontejner s aplikaci nebo je best practice jina?

Pripadne ocenim dalsi tipy k tomuto tematu, co se vam osvedcilo zkusenosti, abych znovu neobjevoval kolo.

DIky za sdileni zkusenosti.

odkaz
7 arron
odpověděl/-a 8.1. 8:54

Ahoj,
obecně vzato, měl bys mít jednak nějaký dockerfile, který dělá kompletní inicializaci aplikace...zpravidla vychází z nějakého image s php+apache a následně tam instaluješ extension, které potřebuješ, případně cokoliv dalšího, co Tvoje aplikace potřebuje. Následuje konfigurace (běžně může být v rámci repozitáře a Ty jí tam prostě zkopíruješ) apache a php, pokud je potřeba. Pak nainstaluješ composer, zkopíruješ zdrojové kódy a pustíš composer install. Mělo by to být tak, abys takhle mohl spustit aplikaci na "produkčním" prostředí tzn. všechno okolo už běží a Ty děláš deploy nové verze aplikace. Citlivé údaje (přihlašovací hesla apod.) je potřeba uchovávat zvlášť a je to dost individuální, jak je tam dostat (env soubory, konstanty prostředí atd...).

Pro vývoj bys pak měl ideálně použít ten samý dockerfile. Zpravidla bývá komplikace s xdebug, protože ten na produkci nechceš, ale na devu jo. Jednodušší způsob jak to řešit je mít v dockerfile nějakou podmínku a řešit to v env file (není to asi úplně čisté řešení, ale je to jednoduchý a dá se s tím v klidu žít, lepší než dělat nějaké další tanečky okolo...). Následně si pro vývoj připravíš docker-compose, který Ti, kromě Tvojí aplikace, spustí všechno další okolo, co potřebuješ (DB, RabbitMq, cokoliv...), abys měl kompletní vývojové prostředí. V rámci docker-compose můžeš spustit i jakékoliv inicializační skripty, takže si umíš vyrobit fakt celé vývojové prostředí jedním commandem.

TL;DR
Pro produkci použiješ normální dockerfile, ve kterém máš všechno, co potřebuje Tvoje aplikace. Pro DEV si vytvoříš docker-compose, který Ti vytvoří kompletní prostředí se všema komponentama (DB apod.) a můžeš tam spustit i jakékoliv inicializační skripty.

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.