Open borazslo opened 6 months ago
cp config/config.dist.php config/config.php :)
Egyébként nincs két egyforma környezet. Nekem fejlesztői szerveren fut, saját docker, mac-en fejlesztek, nfs-en kersztül kerül a kód a szerverre fájlváltoztatás után, te windows-t használsz és nálad fut a docker, van aki meg linuxot. De pl el kell indulnia a kódnak a php beépített webszerverével is.
Mintha a legelső indításkor (docker compose --env-file .env.local -p miserend up ) még a miserend-build nem tud lefutni, mert gyorsabban elkészül mint a mysql és így még nem fér hozzá erőforrásokhoz amire szüksége van. Ha szépen megvan a mysql, akkor utána már dolgozik a miserend-build
Ez hiba. Meg kell adni, hogy a build csak a mysql után indulhat el.
Inkább cp -n config/config.dist.php config/config.php
, nem?
https://github.com/borazslo/miserend.hu/pull/231 Itt a javitas
A .env-et inkább ne mert csak galibát okoz :) Lehet preferált sémát letöltetni és akkor az egy script ami kb beállít mindent ami egy alap futáshoz kell, de akkor milyen rendszerre írjam meg a scriptet? Windowsra és legyen powershell? vagy linuxra és legyen bash? (hogy a mac-ről és a zsh-ról ne is beszéljünk)
Egyébként azt a merényletemet még nem is mondtam, hogy tilos a mysql usert és passt beégetni, azt is env változóból kellene incializálni, a portokat és a hostneveket szintén. A https-t azt hiszem már írtam valahol, amihez meg certet kell generálni. Egy telepítő script írása azért nem triviális mert ott elakad a dolog, hogy milyen script nyelvet használjon az ember. Unix shell adná magát de a posix kompatibilis script írása egyáltalán nem triviális. Ha te windowson vagy akkor minimum két nyelven kell megírni. Mit kell támogatni, mi a minimum aminek meg kell lennie (mind környezetben mind fejben)?
Ó, tökre egyetértek hogy a mysql user és pass is env-ben legyen, meg az egyéb külső API-k adatai is. Pont ezt akartam mondani én is: hogy most az mysql user/pw az egyszer benne van a docker-compose.yml -ben, aztán benne kell legyen az .env (ill. .local.env ) -ben a DATABASE_URL változóban. És még a config/config.(dist.)php -ban is. És ehelyett kéne, hogy csak a .env ill. .local.env -ben legyen.
Másik része: A telepítő script most épp csak annyiért kell - ha jól értem magamat - hogy a config/config.php ne legyen hiányolva. Hanem az alapértelmezett config/config.dist.php is elég legyen. Ezt lehet azzal, ha beépítünk telepítő scriptet és akkor figyelni kell hogy win/osx/linux/akármi. De lehet másik oldalról is neki menni: ami betölti a config/config.php -t ő mondja azt, hogy "ha nincs nekem config.php-m, akkor jó lesz a szamár config.dist.php" és akkor már nem kell annyira környezetekre figyelni és mégis megy, hogy könnyen telepíthető a dolog. Nem jól értem?
Tulajdonképpen a config.dist.php megszűnik. Tehetek oda egy if-et, de a dist-et is be kell állítani, mert nem tartalmazhat jelszavakat, szóval hiába másolom a vége az, hogy valami nem működik mert nem lett beállítva. Szerintem hibás hozzáállás, hogy úgy láttatja magát a rendszer, hogy OK én kész vagyok, pedig messze nem (ebből van a fejvakarás később, hogy miért nem működik x dolog? JA! Mert nem állítottam be). A .env tabu, a .env.local-t meg neked kell beállítani mert szintén vannak / lesznek benne olyan dolgok amiket csak te tudsz (api kulcsok, hozzáférések stb)
És egyébként pont ezért nem értek egyet azzal, hogy a postgres-t kikapcsoltad és betetted a miserend-et a .env-ben. Ha a postgres marad és elhal az oldal betöltése akkor látszik, hogy valami nem működik jól (többnyire feledékenységből). Így viszont elfedtél egy lehetséges hibát.
Lehet telepítő scriptet csinálni, de akkor meg kell határozni a minimumot aminek meg kell lennie rendszer szinten és ahhoz meg lehet csinálni. Én meg majd megoldom a saját rendszerem sajátosságait. Viszont a telepítő script csak és kizárólag fejlesztői környezetet telepíthet. Az éles rendszert igenis tudni kell beállítani.
No próbáltam egy pull_requestet. Hogy szerinted jó-e az irány. Mert ha jól értem, akkor így rendesen minden MYSQL beállítás kiszerveződik az .env.local-ba és beállított értékek nélkül el sem indul. De ha be van állítva, akkor nincs minden mindenhova beégetve.
Igen. A cél az, hogy sehova ne legyen beégetve semmi, mert ha megengedjük ezt, akkor olyan anomáliák lesznek mint a te éles hozzáférésed a forráskódban, vagy személyes adatok az sql dumpban (mindkettővel találkoztam).
Láttam egyébként én is azt, hogy a mysql adatokat duplán kell megadni, de DSN-t át lehet majd forgatni külön változókba, vagy lehet keresni megoldást arra, hogy a docker kezelje a DSN formátumot. Részletkérdés, mivel a docker configba momentán be van égetve a telepítéskori felhasználónév és jelszó. DSN formátumot jobban szeretem, mert így nem szaporodnak el a változók. Egy változó és abban le van írva minden.
Az a gond, hogy a weboldalnak tudnia kell futni:
A docker ebből az egészből csak 1 igény. Értem, hogy fontos az, hogy zero config legyen, de azzal, hogy docker-t használsz már elbuktad a zero configot, mert a docker-t sem egy saját telepítő telepíti, hanem neked kell külön telepíteni és configurálni (hogy mást ne mondjak biosban engedélyezni a virtualizációt). Azzal, hogy a saját beállításaidat próbálod univerzálissá tenni, csak visszatérünk a legacy rendszer röghöz kötött és nehezen tesztelhető felépítéséhez. Ha fontos a zero config, definiáld, hogy mi a rendszerminimum és megírom. De ez nem a weboldal kódjának a része. Ez egy fejlesztői tool amit meg kell csinálni és függetleníteni a weboldaltól.
A fejlesztésbe bekapcsolódás megkönnyítése érdekében fontos, hogy egyetlen jó paranccsal nulláról lehessen telepíteni development környezetben mindent és egyből elinduljon a mintaoldal. (Persze ehhez fontos, hogy ha volt korábbi telepítés akkor a docker-ből a mentett volume dolgokat is törölni kell!)
Ez még nem teljesen valósul meg.
Az
.env
fájlba aDATABASE_URL
értéke most postgresql, de adocker-compose.yml
-ben mysql-t hozunk létre. Így valami ilyesmi kéne:DATABASE_URL="mysql://user:pw@mysql:3306/miserend?serverVersion=8.0.32&charset=utf8mb4"
Viszont jobb lenne csak egy helyen definiálni a mysql host/user/pw változókat. Vagyis legyenek ezek is az
.env
fájlban, abból generálva aDATABASE_URL="mysql://${MYSQL_USER}:
... -t. És abból építve adocker-composer.yml
-t. De még aconfig/config.dist.php
-t is.És akkor már: nem lehetne hogy akkor is működjön, ha még nincs saját
config/config.php
? Hogy a deafultokkal már elinduljon a legacy is és csókolom. (Kell ez az egy kattintásos telepítéshez.)Mintha a legelső indításkor (
docker compose --env-file .env.local -p miserend up
) még a miserend-build nem tud lefutni, mert gyorsabban elkészül mint a mysql és így még nem fér hozzá erőforrásokhoz amire szüksége van. Ha szépen megvan a mysql, akkor utána már dolgozik a miserend-build