Az itt kialakult beszélgetés inspirálta ezt az írást.
Sokaknak gondot okoz kialakítani a local környezetüket úgy, hogy annak szerkeztete megegyezzen az osztott hoszting környezetben lévővel.
Erre a legegyszerűbb megoldás a docker4drupal által biztosított megoldás amit olyanra lehet alakítani amilyen a szerveren van.
Nem fogom oprendszer specifikusan írni, mert a dockert mindegyiken ugyanúgy kell használni. A lényeg, hogy a docker és a docker-compose fel legyen telepítve és el legyen indítva.
Példaként vegyük azt az esetet amikor a hoston az alábbi könyvtárba kerül a drupal:
/var/www/mysite/web
Ebből mi tulajdonképp annyit tudunk, hogy a drupal minden alkotórésze a web mappában van az index.php -vel együtt, semmilyen komponens nem kerül a szülő mappába.
Töltsük le a docker4drupal könyvtárat vagy klónozzuk le git alkalmazással innen:
Docker4Drupal
ha megvan tömörítsük ki ha szükséges.
A projekt létrehozásának a lépései:
Lépjünk be a d10teszt könyvtárba és adjuk ki a következő parancsot:
docker-compose up -d
Ez egy csomó mindent letölt és ha minden rendben akkor elindítja a szükséges konténereket. Ha hiba nélkül lefutott akkor beléphetünk a php konténerbe:
docker-compose exec php bash
Most bekerültünk egy virtuális környezetbe ahol használhatjuk a composert a projektünk karbantartására.
Hozzuk létre a projektet:
composer create-project drupal/recommended-project web
Ez a parancs létrehozza a drupal projektet a web mappába.
Sajnos ez a struktúra nem lesz kompatibilis a szerveren lévő struktúrával ezért lépjünk be a web mappába:
cd web
és töröljük a web és vendor könyvtárakat:
rm -rf web vendor
Ezután a composer.json fájlt kell módosítani, hogy ne a web mappába akarjon telepíteni hanem egy szintre telepítse a drupal könyvtárakat és a vendor könyvtárt, mint a szerveren.
Tehát módosítsuk a következőket a composer.json fájlban:
"drupal-scaffold": { "locations": { "web-root": "./" } },
és az „installer-paths” alatt minden web/ legyen eltávolítva. Itt egy minta csak át kell nevezni json-ra Minta composer file
Ha ez megvan akkor újrainstallálni a drupalt:
composer install -o
Most már a drupal és a vendor egy könyvtárba került.
Szükségünk lesz egy jól működő drush-ra is:
composer require drush/drush
Ha ez is megvan akkor már létrehozhatjuk a drupalunkat:
vendor/bin/drush si --db-url=mysql://drupal:drupal@mariadb/drupal
vagy letölthetjük ftp-n a szerverről és bemásolhatjuk az adatbázissal együtt, így már nem okozhat gondot a szerver szerkezet. Ebben az esetben a composer.json „require” részt ki kell egészíteni a használt modulokkal.
Ha a PROJECT_BASE_URL=testd10.localhost akkor a drupal oldal a http://testd10.localhost:8000 címen lesz elérhető.
Ha nem akar valaki dockert használni, mert van WAMP vagy LAMP a localhostra telepítve akkor is ugyanez a menete onantól, hogy beléptünk a php konténerbe. A site install parancsban módosítani kell az adatbázis adatokat a tényleges adatbázisnévre, felhasználónévre és jelszóra valamint a mariadb helyett localhost kell
vendor/bin/drush si --db-url=mysql://db_user:db_password@localhost/db_name