Docker a Google Cloud Datastore / Amazon S3 volume

Docker a Google Cloud Datastore / Amazon S3 volume
« kdy: 17. 11. 2016, 21:49:26 »
Ahojte,
zacal som sa hrat, prvy krat, s dockerom a postupne sa prepracoval k tomu ze mam tri kontajnery: nginx, php-fpm a data.

Na nginxe bezi oficialny nginx s vlastnym konfigom, php-fpm je z oficialneho image bez zasahu a v data si stahujem z gitu php zdrojaky.

Zatial sa hram len s docker compose ale chystam sa na kubernetes, respektive Google Container Engine.

Anyway, data image spristupnuje volume v dockerfile a tu mountujem v docker-compose.jsom cez volumes_from parameter a aj php aj nginx tuto volume z data vidia.

Co vsak rieism teraz je to ze chcem namountovat Google Cloud Datastore respektive Amazon S3 do nejakej zlozky v data kontajnery/image, napriklad /app/data a moct tak citat a pisat do tohto backendu z nginx(prakticky len citanie) a php kontajneru.

Neviem ako to riesi Amazon S3 ale GCD ma na to gcsfuse utilitku zalozenu na libfuse. Cez nu sa mi podarilo v pohode namountovat backend do /app/data v mojej data image a spustit kontajner.

Ked si otvorim data kontajner cez shell tak ten backend realne funguje, vidim subory, vytvaram subory, citam subory a tak dalej...a ked si otvorim webovu amdinistraciu(google/amazon) tak je vsetko ako ma byt.

Ked sa vsak pozriem do nginx alebo php kontajneru tak zlozka je prazdna a akekolvek zmeny v tejto zlozke vidia iba tieto dva kontajnery a nie samotny data kontajner ktory volume poskytuje.

Prisiel som k zaveru ze nginx a php kontajnery vidia "originalnu" cielovu zlozku(/app/data) do ktorej nie je namountovany backend a ze tento backend funguje iba priamo v data kontajnery.

Avsak nechcem robit monoliticku aplikaciu ani mountovat backend v kazdej image, tak by ma zaujimalo ci neviete niekto ako toto rozbehat? V principe je to iba otazka dockeru a ako riesi prepojenia volume a kontajnerov do coho ja moc nevidim zatial.

Googlil som, ale neviem sa nicoho dopatrat.


Re:Docker a Google Cloud Datastore / Amazon S3 volume
« Odpověď #1 kdy: 17. 11. 2016, 22:46:03 »
Ta data z Amazonu si musíte napamovat na tom stroji, kde běží Docker. Příslušný adresář pak namapujete jako volume do těch aplikačních kontejnerů (parametr -v – určíte, který adresář ze systému, kde běží Docker, namapovat do kterého adresáře uvnitř kontejneru). Případně se ještě používají volume kontejnery, to je o něco čistší řešení – v jednom kontejneru máte data, a ten pak můžete namapovat do různých aplikačních kontejnerů.

Re:Docker a Google Cloud Datastore / Amazon S3 volume
« Odpověď #2 kdy: 18. 11. 2016, 07:11:32 »
No ved ten druhy variant prave mam.
Ale ten prvy variant mozno bude fungovat lepsie, ak by som pouzil Kubernetes a namapoval to na Pod, vtedy by to asi malo fungovat pre kontajnery v nom. Lenze som nevidel ziaden driver na to http://kubernetes.io/docs/user-guide/volumes/

Ondrej

Re:Docker a Google Cloud Datastore / Amazon S3 volume
« Odpověď #3 kdy: 18. 11. 2016, 11:37:43 »
Hoď sem výpis z inspect kontejnerů, bez toho ti neporadíme.
(Nikdy sem moc nepochopil k čemu jsou dobré data kontejnery, tedy pochopil, ale nevím proč bych je měl používat. Zkus to namountovat na přímo z serveru kde ti kontejnery běží přepínačem -v)

Re:Docker a Google Cloud Datastore / Amazon S3 volume
« Odpověď #4 kdy: 18. 11. 2016, 18:27:53 »
No ved ten druhy variant prave mam.
Evidentně ne. Kdybyste měl jeden volume container a namapoval ho do tří aplikačních kontejnerů, uvidíte ve všech čtyřech kontejnerech ta samá data.