Jak dostat nette repozitář do Docker kontejneru
- Vojtha
- Člen | 37
Ahoj,
rozhodl jsem se zkusit vývoj s pomocí Docker kontejneru, kde by měl
běžet localhost. Trochu zápasím s tím, jak vše správně nastavit.
Přijde mi nejjednodušší spustit kontejner s tím, že do kontejneru
připojím (mount) externí repozitář (složku) s Nette projektem. Zkouším
k tomuto účelu použít dockette/web, ale nedaří se mi správně nastavit server,
protože potřebuji připojit celou root složku (obsahující app, vendor, www,
atd), ale document root pro webový server musí být nasměrovaný na podložku
www. Nepodařilo se mi nikde najít, jak toho docílit. Ale možná na to jdu
úplně špatně. Máte prosím někdo nějaký tip, jak na to?
Btw., můj docker-compose.yml zatím vypadá takto:
version: '4.18'
services:
webserver:
image: 'dockette/web:php-74'
volumes:
- '.:/srv/www/'
ports:
- '8080:80'
Díky za odpovědi.
- Felix
- Nette Core | 1247
Ahoj, dockette/web
nema uplne nejvetsi dokumentaci, to zkusim
vylepsit.
Jestli tvuj projekt vypada nejak takto:
.
├── app
├── vendor
├── www
├── composer.json
└── composer.lock
Tak by ti melo stacit toto.
services:
webserver:
image: 'dockette/web:php-74'
volumes:
- '.:/srv'
ports:
- '8080:80'
Defaultni
Nginx file root je prave do /srv/www
, takze to tam pohodlne
najde /srv/www/index.php
.
- Vojtha
- Člen | 37
Vlastně mám ještě další dvě otázky :-)
- Spíš by to patřilo na nějaké Docker fórum, ale proč když chci nastavit port na defaultní http, tak aby adresa nebyla localhost:8080, ale jen localhost, tedy nastavím
ports:
- '80:80'
dostávám defaultní Dockette stránku, namísto toho, co mám v /srv/www ?
- Ještě dost válčím s MySQL kontejnerem, opět jsem zkoušel dockette/adminer, ale na daném portu se prohlížeč jen kroutí a nezobrazí nic než bílou stránku. Vlastně si nejsem ani jistý, jestli image obsahuje jen adminer, nebo i samotný mysql server. Mohu ještě poprosit o nějaký nástřel konfigurace? Není to nic speciálního, jen myqsl databáze s pár tabulkami.
Díky!
- MKI-Miro
- Člen | 279
@Felix neslo by do dockette/web pridat aspon troska dokumnetacie? vysvetlim moj stav:
Do teraz som na dev používal wamp server. S príchodom nového ntb som sa ale začal rozdliadať či by nebolo vhodné posunúť sa niekam ďalej a narazil som práve na dockette/web. Nainštaloval som si teda docker desktop a stiahol a spustil dockette/web:php-82. Container mi síce beží ale čo dalej? localhost mi v brwoseri nefunguje a nie som si istý či by vôbec mal? či som niečo nevynechal.
- MKI-Miro
- Člen | 279
Tak skusme to takto step by step:
- Stiahnut a nainstalovar docker desktop
- V docker desktop najst image dockette/web a vybrat potrebnu PHP verziu
- Pri spustani containeru nezabudnut zadat port a potom by uz v brwoseri malo it localhost:port
- V hlavnom adresari projektu je potrebne vytvorit subor docker-compose.yml (vedla composer.json)
Jeho obsah by mohol vyzerat takto:
version: '3.8'
services:
php-apache-environment: # custom project name # https://docs.docker.com/compose/compose-file/04-version-and-name/
container_name: php-apache # custom container name https://docs.docker.com/compose/compose-file/05-services/#container_name
image: 'dockette/web:php-82' # https://docs.docker.com/compose/compose-file/05-services/#image
volumes: # https://docs.docker.com/compose/compose-file/05-services/#volumes
- '.:/srv'
ports: # https://docs.docker.com/compose/compose-file/05-services/#ports
- 8000:80
5. spustit prikaz ‚docker-compose up‘
6. Nasledne v browsri na http://localhost:8000/ by uzmala byt appka
Editoval MKI-Miro (20. 6. 2023 10:26)
- NouF
- Člen | 68
To bude furt stejný problém.
Když vypneš mount do containeru. Bude to fungovat rychle.
Když je zapnutý mount tak komuikace (windows → docker container) je hrozně pomalé, řešení je, přesunout soubory z windows PC do např. Ubuntu aby ta komunikace byla Ubuntu → docker container (pak je rychlost ok)
Je nutné to nastavit WSL2, nainstalovat ubuntu a soubory webovky přesunout do ubuntu.
MKI-Miro napsal(a):
Doplnujuca otazka: nacitanie webu cez docker trva 20 – 30 sekund (pricom na hostingu to je hlboko pod sekundu)
Ako to prestavit aby to slapalo rychlejsie?
- m.brecher
- Generous Backer | 873
@dakur
Já to dělám tak, že vyvíjím na Windows a přes SSH (jde i automaticky přes PhpStorm > Deployment) to zrcadlím do WSL
To zní zajímavě, rád bych se dozvěděl detaily. Kde máš nainstalován development server s PHP + Apache ?? V tom WSL ?? WSL máš na stejném pc s Windows na kterém vyvíjíš ??
- Marek Bartoš
- Nette Blogger | 1280
WSL2 se soubory, které má na svém síťovém disku funguje výborně. I phpstorm na Windows s tím umí pracovat. Není důvod v téhle době řešit mirroring souborů
- NouF
- Člen | 68
Ahoj, zvládneš k tomu popsat něco víc?
- Kam uložíš soubory projektu?
- Oprávnění (Jak je řešené to, že soubory jsou pod nějakým uživatelem a v containeru jsou pod jiným)
Marek Bartoš napsal(a):
WSL2 se soubory, které má na svém síťovém disku funguje výborně. I phpstorm na Windows s tím umí pracovat. Není důvod v téhle době řešit mirroring souborů
- dakur
- Člen | 493
Marek Bartoš napsal(a):
WSL2 se soubory, které má na svém síťovém disku funguje výborně. I phpstorm na Windows s tím umí pracovat. Není důvod v téhle době řešit mirroring souborů
To ano. Až do chvíle, kdy manažuješ distribuce ve WSL přes CLI, dáš
wsl --uninstall
a nedojde ti, že tam máš repa. Nic co bych
chtěl řešit, proto mirroring.
m.brecher napsal(a):
To zní zajímavě, rád bych se dozvěděl detaily. Kde máš nainstalován development server s PHP + Apache ?? V tom WSL ?? WSL máš na stejném pc s Windows na kterém vyvíjíš ??
V dockeru. Jediný rozdíl oproti standardnímu řešení (repo ve wsl) je to, že si to repo automatizovaně do WSL mirroruju (prostě PhpStorm za mě zkopíruje soubor do WSL při každé jeho změně).
Editoval dakur (30. 6. 2023 14:36)
- dakur
- Člen | 493
@NouF Na to oprávnění je dobrý článek zde: https://jtreminio.com/…t-host-user/
Akorát se to pak musí ještě customizovat pro mac prostředí, tam to není třeba.
Editoval dakur (30. 6. 2023 14:40)
- NouF
- Člen | 68
moc díky
dakur napsal(a):
@NouF Na to oprávnění je dobrý článek zde: https://jtreminio.com/…t-host-user/
Akorát se to pak musí ještě customizovat pro mac prostředí, tam to není třeba.