Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Vagrant i prawa do plików
athabus
post 1.02.2018, 09:25:31
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Właśnie testuję vagranta i muszę przyznać, że bardzo mi się podoba, bo rozwijam (a w sumie może bardziej serwisuję) trochę skryptów na starych frameworkach (np. Symfony 1.4) i często musiałem downgradować swoje środowisko, żeby móc je dalej rozwijać. Vagrant rozwiązałby ten problem... ale.

No własnie mam problem dajmy na to na Hoście (Ubuntu 16.04 + Virtualbox) mam plik z prawami 744 i udostępniony na gościu przez sync folders. Problem w tym, że na gościu nijak nie mogę edytować tego pliku - nawet jako sudo. Plik na gościu mogę edytować dopiero, gdy dam na hoście prawo zapisu do grupy, czyli np. 754. Podejrzewam, że ma to coś wspólnego ze sposobem udostępniania pliku przez Virtualboxa, tj że gość jest przypisany do grupy virtualboxa i dlatego aby jakiekolwiek dyrektywy z vagranta działały, virtualbox musi mieć praw do zapisu pliku (czyli grupa musi mieć możliwość zapisu).

Da się to jakoś obejść? Niekoniecznie chce dawać wszystkim plikom prawa do zapisu przez grupę.
Go to the top of the page
+Quote Post
nospor
post 1.02.2018, 09:35:20
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Wybacz, ze napisze nie na temat, ale skoro dopiero zaczynasz z vagrant to naprawde nie ma sensu marnowac czasu na jego nauke bo to juz przezytek. Skoro dopiero zaczynasz to lepiej zaczac z czyms, co jest teraz na topie i daje o wiele wieksze mozliwosci jak Docker.

Tez kiedys bawilem sie w vagrant i bylem pod wielkim wrazeniem co to mi daje za wspaniale rzeczy. Potem przesiadlem sie na Docker i kurcze, vagrant chowa sie w tyle


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 1.02.2018, 11:04:13
Post #3





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


No dzięki - i teraz muszę uczyć się od nowa ;-) Dobrze, że zapytałem dzisiaj po 2-4h zabawy z vagrantem ;-)
Go to the top of the page
+Quote Post
by_ikar
post 1.02.2018, 22:22:13
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Vagratn z racji że jest to pełna wirtualizacja nie współdzieli tych samych użytkowników/grup co host, a same chmody, grupy musisz dodawać przy samym odpaleniu vagranta via vagrantfile i jest to przypisane do całego katalogu który współdzielisz.

Docker z drugiej strony, niczego nie wirtualizuje, tylko wrzuca twój program i jego pliki do czegoś w rodzaju sanboxa (cgroups + namespaces), a sam kernel jest współdzielony. Więc jeżeli w dockerze chcesz mieć użytkownika lub grupę to musisz mieć ją utworzoną na hoście, a same współdzielone "foldery" są raczej czymś w rodzaju dowiązania, niż jakiegoś zasobu typu nfs jak to ma miejsce w vagrancie. Różnica w wydajności kosmiczna.
Go to the top of the page
+Quote Post
athabus
post 2.02.2018, 10:31:14
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Tylko własnie problem jest taki, że to nie działa jeśli na host grupa nie ma prawa zapisu do pliku.

Czyli np. taki scenariusz - na host mam plik x z prawami 744 w vagrant file zmieniam użytkownika na www-data, prawa nawet na 777. Serwer mimo, że w teorii ma pełne prawa jako właściciel do pliku, to nie może go zmodyfikować. Analogicznie nawet nie mogę go zmodyfikować na gościu używając sudo. Po prostu (jak mniemam) host blokuje możliwość zapisu. Przypuszczam, że aby móc zapisywać grupa vbxxx (nie pamiętam teraz jak się ta grupa virtuaboxa) nazywa musi mieć prawa zapisu do pliku.

Co do Dockera to bardzo mi się spodobała koncepcja - zwłaszcza po przeczytaniu artykułów na blogu nospora. Zdecydowanie na potrzeby dev i nie tylko jest to bardziej elastyczne rozwiązanie i daje sporo możliwości... Ale przyznam szczerze, że jest mega skomplikowane na starcie. Wczoraj pół dnia się tym bawiłem i coś tam już zaczynam ogarniać, ale wiele rzeczy mi się wydaje "przekombinowane". Vagrant mimo wszystko jest dość prosty - 1-2h zabawy i w zasadzie wie się o co chodzi i można na tym pracować. W Dockerze - po 2h dopiero zaczynałem rozumieć ideę. Brakuje mi też takiego dobrego tutoriala "od zera do bohatera" - wszytko trzeba sklejać ze strzępów informacji. Przez brak możliwości np. łatwej podmiany dowiązanego systemu plików/portu etc trudno uzyskać elastyczność. Zaczynam już trochę rozumieć filozofię Dockera i to, że powinienem sobie w sumie zbudować całe środowisko oparte o pliki konfiguracyjne i z nich tworzyć kontenery etc... Ale to wszystko sprawia, że trudno na tego konia wskoczyć. Powiem szczerze, ze po wczorajszej zabawie bym sobie temat odpuścił i wrócił do Vagranta, ale bardzo spodobała mi się idea uruchamiania kontenerów na serwerze... Teraz jestem trochę w kropce, bo nie mam czasu na zabawy z Dockerem, ale bardzo mi się temat spodobał ;-) Chyba na szybko wrócę do Vagranta, a do Dockera wrócę przy wolnej chwili.

Gdyby był jakiś dobry tutorial pokazujący prawidłową pracę z Dockerem, to pewnie bym, któryś weekend poświęcił na to, ale nic dobrego nie mogę znaleźć.
Go to the top of the page
+Quote Post
nospor
post 2.02.2018, 10:39:56
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Chyba na szybko wrócę do Vagranta, a do Dockera wrócę przy wolnej chwili.
No ale po co? To zrob jak rozmawialismy wczesniej: uzyj dockera tak jak uzywales vagrant czyli zainstaluj sobie wszystko w jednym kontenerze i juz. To juz bedzie jakis poczatek i to juz na pewno umiesz zrobic.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 2.02.2018, 11:05:01
Post #7





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Wczoraj tak zrobiłem i na końcu się okazało, że nie mogę podpiąć plików do utworzonego kontenera ;-). W Vagrancie mam już utworzone całe środowisko i mogę pracować, a tutaj znów trochę zabawy, żeby poskładać wszystko od zera.

Nie mam dzisiaj czasu, bo muszę kilka rzeczy na szybko zaprogramować, ale do Dockera chcę szybko wrócić.
Go to the top of the page
+Quote Post
nospor
post 2.02.2018, 12:23:20
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




A w jaki sposob odpalales ten kontener w ogole? volumes podpina sie do kontenera w momencie jego startu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 2.02.2018, 12:42:45
Post #9





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Teraz już wiem ;-)
Ja zrobiłem tak jak w Vagrancie tj. odpaliłem sobie czystego Debiana dodałem LAMP etc. I jak już wszystko miałem gotowe, to stwierdziłem pora podpiąć pliki (w vagrancie spokojnie można dodawać volumy/zmieniać IP itp do woli) ... I zonk.

Teraz już wiem, że volumes się podpina na starcie kontenera i jak chcę to zmienić, to muszę usunąć kontener i stworzyć nowy z podpiętymi volumes. Tyle tylko, ze takie podejście jak z Vagranta zupełnie nie ma sensu w tym przypadku, bo co jak po 3 miesiącach stwierdzę, że chcę coś nowego podpiąć etc - trzeba od nowa konfigurować cały kontener.
Jak się z tym wszystkim "przespałem" to już rozumiem, że po prostu trzeba stworzyć sobie Dockerfile, które na starcie "zbuduje" cały kontener, a ewentualną konfigurację podpiąć jako zewnętrzny plik. I tu znów dochodzimy do momentu, gdzie przecież nie zrobię całego lampa w jednym DockerFile, i tu dochodzimy do tego, że aby racjonalnie korzystać z Dockera trzeba nauczyć się podejścia, które masz na swoim blogu = > 1 usługa = 1 kontener + Compose dla całego środowiska, bo 1 kontener ze wszystkimi usługami jest kompletnie niepraktyczny. No i jeszcze to wszystko trzeba zautomatyzować pod różne projekty, które się ma. Zrobię to po bożemu.

PS. jak w praktyce rozwiązujecie konfigurację? Załóżmy mam projekt /var/www/p1 to pliki dockera dajecie /var/www/p1/docker i trzymacie w repozytorium razem z projektem? Czy jednak poziom wyżej i w git już Dockerfile nie trzymacie?
Go to the top of the page
+Quote Post
nospor
post 2.02.2018, 12:46:46
Post #10





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
I tu znów dochodzimy do momentu, gdzie przecież nie zrobię całego lampa w jednym DockerFile, i tu dochodzimy do tego, że aby racjonalnie korzystać z Dockera trzeba nauczyć się podejścia, które masz na swoim blogu = > 1 usługa = 1 kontener + Compose dla całego środowiska, bo 1 kontener ze wszystkimi usługami jest kompletnie niepraktyczny
No tak, ale ty dokladnie to samo chcesz zrobic teraz na vagrant i tez to jest niepraktyczne a jednak chcesz do tego wrocic. To ci mowie ze juz lepiej zrob to co na vagrant tylko ze na docker i sie juz oswajaj z docker, nawet jak w docker to nei ma sensu smile.gif

Cytat
S. jak w praktyce rozwiązujecie konfigurację? Załóżmy mam projekt /var/www/p1 to pliki dockera dajecie /var/www/p1/docker i trzymacie w repozytorium razem z projektem? Czy jednak poziom wyżej i w git już Dockerfile nie trzymacie?
Tak, cala konfiguracja docker tez lezy w repo. Przeciez jak przyjdzie nowy dev do zespolu to chcemy by w ciagu 5 minut postawil gotowy projekt a nie bujal sie nad nim dwa dni, co nie? wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 2.02.2018, 12:57:15
Post #11





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Haha tylko Vagranta mam już gotowego pod projekt, do którego był mi potrzebny i dlatego już stwierdziłem, że nie będę tego robił od nowa w Dockerze bo szkoda czasu.

O Dockerze doczytuje w przerwach na relaks i już jestem na etapie Dockerfile - powiedzmy, że już umiem z pomocą Google stworzyć konfigurację Apacha i chyba php, do mysqla jeszcze nie dotarłem, ale tam się zastanawiam jak to jest rozwiązane z przechowywaniem samej bazy bo jeśli się używa kilku to chyba może być problem aby przechowywać je w standardowej lokalizacji mysql... Ale pewnie jak dojdę do tego to w Google znajdę rozwiązanie.

Teraz najbardziej zastanawia mnie jakie są scenariusze rozłożenia tego w praktyce w strukturze projektu.

Ja programuje tylko w php i wszystkie projekty trzymam w /var/www/ (w sumie to w home i dodaje linki symboliczne, ale to mało istotne) i teraz się zastanawiam jak do tego dołożyć dockera - zrobić z tego taką strukturę jak proponowałeś w swoim projekcie, czy jednak pliki dockera trzymać w obrębie projektu, żeby wszystko było razem w GIT. Za dużo tych wszystkich dylematów na początek ;-)

PS. ja jestem samoukiem, amatorem. Nie pracuję w żadnej grupie tylko rozwijam projekty na własne potrzeby, stety niestety tak jak kiedyś to było moje hobby, tak ostatnio zaczyna to być główny element mojego życia "zawodowego". Trochę odczuwam braki tego, że muszę sam odkrywać koło, bo pewnie bym poszedł do pracy do jakiejś firmy, to bym się tego wszystkiego nauczył od kolegów 5x szybciej.

Ten post edytował athabus 2.02.2018, 13:00:20
Go to the top of the page
+Quote Post
nospor
post 2.02.2018, 13:02:24
Post #12





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Juz powiedzialem: pliki dockera masz trzymac w repo danego projektu. Kazdy projekt ma swoja wlasna konfiguracje docker, procz rzecz jasna paru wyjatkow, ale to tylko narazie z tym sie spotkalem u mnie w firmie. Generalnie kazdy projekt, ktory jest niezaleznym bytem powinien miec wlasna konfiguracje docker. Nie ma sensu wszystkiego pchac do jednej bo z czasem sie okaze ze nagle jakis projekt wymaga czegos innego niz inne.

Co do bazy mysql to kazdy projekt tez ma wlasna. I moze ona lezec w kontenerze i juz. Ale to rozwiazanie ma wade, bo jak kiedys skasujesz kontener, a z czasem zobaczysz ze czesto tak bedziesz robil, to sie okaze ze i baze szlag trafil
Inne rozwiazanie to mapowac katalog bazy do katalogu hosta. Swego czasu dlugo tak robilem bo kopie bazy to poprostu kopiowalem katalog hosta i tada.

Teraz jednak katalogi baz danych trzymam w VOLUMEs. Chyba najlepsze rozwiazanie na chwile obecna. Ale to kolejny etap nauki docker wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 2.02.2018, 13:55:19
Post #13





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Widzę, że mnie czeka dużo nauki.

W takim razie zamęczam dalej. Z jakich images korzystacie w przypadku LAMP? Widzę, że jest wiele ciekawych rozwiązań typu np. Apache + PHP w jednej paczce z opcjami deb (np. x-debug itp). Super sprawa, że można sobie to wszystko postawić kilkoma linijkami tekstu. Tylko teraz pytanie - jak z doświadczenia polecacie postawić tego LAMPA, tj z których images skorzystać, bo jest tego tyle, że trudno się zdecydować.

Jak rozwiązujecie w praktyce deployment? Załóżmy, że mówimy o małych, jednoosobowych projektach, bo pewnie w firmach wygląda to inaczej. Macie 2 wersje środowiska - rozwijacie w dev i potem uruchamiacie produkcyjne i testujecie czy wszystko działa? Czy jednak wygląda to inaczej.
Go to the top of the page
+Quote Post
by_ikar
post 2.02.2018, 14:33:03
Post #14





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Generalnie docker umożliwia ci dodanie volumenu, zbindowanie portu bez kasowania rzeczy, problem jest taki że nie umożliwia tego CLI. Docker wystawia serwer restowy (/var/run/docker.sock) z którego korzysta CLI i to samo CLI jest ograniczone nie umożliwiając tego.

Bardzo ci ułatwi zobaczenie na docker-compose, poszukanie jakichś gotowych kontenerów, a wierz lub nie, jest ich na pęczki. W samym 2016 było dostępnych przeszło 400k obrazów, aktualnie obstawiam że jest ich conajmniej 2x tyle.

Cytat
Tylko teraz pytanie - jak z doświadczenia polecacie postawić tego LAMPA, tj z których images skorzystać, bo jest tego tyle, że trudno się zdecydować.


na początek użyj czegoś gotowego, jak już będziesz miał wiedzę i wprawę to zrobisz coś swojego, lub dalej będziesz korzystać z gotowca jeżeli będzie cię satysfakcjonować.

Cytat
Jak rozwiązujecie w praktyce deployment? Załóżmy, że mówimy o małych, jednoosobowych projektach, bo pewnie w firmach wygląda to inaczej. Macie 2 wersje środowiska - rozwijacie w dev i potem uruchamiacie produkcyjne i testujecie czy wszystko działa? Czy jednak wygląda to inaczej.


Najlepiej testować przed wrzuceniem na produkcje wink.gif Generalnie możesz sobie zbudować obraz lokalnie, uruchomić go i przetestować. Jak już będzie wszystko OK, to wrzucasz na registry ten swój obraz (prywatne, lub publiczne) i na swoim serwerze robisz docker run które ten zbudowany przetestowany obraz sobie pobierze.
Go to the top of the page
+Quote Post
nospor
post 2.02.2018, 14:44:01
Post #15





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Wydaje mi sie ze mowienie narazie o docker na serwerze to zdecydowanie za wczesnie. Wpierw opanuj lokalnie, potem bedziesz myslal o serwerze.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
athabus
post 6.02.2018, 16:48:08
Post #16





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ok chłopaki, dzisiaj miałem chwilkę, żeby pobawić się dockerem i jestem już prawie w domu. Postawiłem sobie środowisko developerskei php + apache, za pomocą docker file zmieniłem wybrane zmienne środowiskowe i stworzyłem z tego własny obraz.
Następnie w docker-compose użyłem tego obrazu jako podstawy mojego kontenera, przydzieliłem odpowiedni port apachowi, zamontowałem volumen z projektem. Dodatkowo użyłem gotowego obrazu sameersbn/mysql (tak jak radził w artykule noospor). bazy metodą prób i błędów podłączyłem jako volumen i teraz zapisują mi się w /home/marcin/db/mysql czyli ewentualny reset kontenera nie powoduje już usunięcia samych danych. So far so good.

I teraz utknąłem na dość banalnym zapewne problemie. Załóżmy, że mam bazę ~500mb i chciałbym ją sobie zaimportować. Normalnie robię to standardowo z linii poleceń. Jak ogarniacie temat w przypadku kontenerów? Montujecie jakiś volumen, na którym macie backupy baz czy jakoś inaczej temat rozwiązujecie? Może po prostu używacie jakiegoś GUI?
Go to the top of the page
+Quote Post
nospor
post 6.02.2018, 16:54:42
Post #17





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
. Dodatkowo użyłem gotowego obrazu sameersbn/mysql (tak jak radził w artykule noospor).
Mowilem ci, ze to jest art z moich poczatkow wiec nie bierz tam wszystkiego jak wyrocznie. Ja teraz do mysql uzywam obrazu: mariadb smile.gif

Cytat
czyli ewentualny reset kontenera nie powoduje już usunięcia samych danych.
Nie wiem co rozumiesz przez reset, ale restart kontenera i tak by ci nic nie usunal. Ja mowilem o skasowaniu kontenera i postawieniu nowego. Ty tez to masz na mysli przez "reset" ?

Import mysql w docker ja robilem jak pisalem ci wczesniej. Kopiuje poprostu pliki z jednego katalogu mysql do katalogu zamontowanego do kontenera i dziala smile.gif
Mozesz oczywiscie to robic normalnie czyli najpierw dump z serwera a potem import do lokalnego.
W przypadku gdy obie bazy sa jako voluminy w docker to jeszcze inaczej mozna ale sie jeszcze nie bawilem


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 6.02.2018, 19:41:59
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Co do importu bazy to używając oficjalnego obrazu mysql możesz podmontować w docker-compose.yml tak:

- ./dump.sql:/docker-entrypoint-initdb.d/dump.sql

wtedy podczas tworzeia kontenera baza się zaimportuje.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:11