Jak dostat nette repozitář do Docker kontejneru

Vojtha
Člen | 36
+
0
-

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 | 1190
+
0
-

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 | 36
+
0
-

Super díky, to mi nedošlo, jak je to jednoduché :-)

A fascinuje mě, jak rychle tady člověk dostane dobrou radu!

Vojtha
Člen | 36
+
0
-

Vlastně mám ještě další dvě otázky :-)

  1. 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 ?

  1. 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!

NouF
Backer | 65
+
0
-

Ahoj, jestli chceš, muzu pomoc po teamvieweru, pak tu muzes jen sepsat, odpověď..

Vojtha
Člen | 36
+
0
-

@NouF díky, to by bylo skvělé. Jen ne přes teamviewer, není to bezpečné. Google meet to zvládne taky myslím :-)

MKI-Miro
Člen | 271
+
0
-

@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.

NouF
Backer | 65
+
0
-

Ahoj, můžu ti pomoc a pokud to pak sepíšeš, určitě to může pomoc.

M

MKI-Miro
Člen | 271
+
0
-

Tak skusme to takto step by step:

  1. Stiahnut a nainstalovar docker desktop
  2. V docker desktop najst image dockette/web a vybrat potrebnu PHP verziu
  3. Pri spustani containeru nezabudnut zadat port a potom by uz v brwoseri malo it localhost:port
  4. 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)

MKI-Miro
Člen | 271
+
0
-

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?

NouF
Backer | 65
+
0
-

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?

dakur
Člen | 493
+
+1
-

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 – funguje to docela dobře.

Editoval dakur (29. 6. 2023 14:22)

m.brecher
Generous Backer | 761
+
0
-

@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 | 1176
+
0
-

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
Backer | 65
+
0
-

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ů

MKI-Miro
Člen | 271
+
0
-

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ů

cize ako to spravit aby request netrval 30 sec?

dakur
Člen | 493
+
0
-

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
+
+1
-

@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
Backer | 65
+
0
-

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.