Jump to content
php.lv forumi

MacOS un Docker


duncanf293

Recommended Posts

Sveiki, esmu sācis lietot Docker un nevaru nepamanīt, ka uz MacOS tas darbojas diezgan lēni. Vispārīgi saprotu tam iemeslus - MacOS un Windows vide nav linux - tur ir vajadzīga vēl viena smaga/lēna abstrakcija. Izskatās bēdīgi, jo jaunam Macbook Pro ar i9 procesoru vajag kādas 2 sekundes, lai apstrādātu vienu web requestu. Tur pat nenotiek nekas resursu intensīvs, nav pat savienošanās ar datubāzi. Tikai parasta skata renderēšana. Salīdzinājumam švakāks DELL laptops ar linux burtiski lido.

Vai tam ir kāds reāls risinājums? Bieži dzirdu par to cik Docker ir labs, cik plaši to izmanto utt, bet nu kā tad to sūdu reāli izmantot ja sakarīgs ātrums ir tikai Linux vidē?

Paldies!

Link to comment
Share on other sites

18 minutes ago, Kasspars said:

Lēna ir failu lasīšana no host mašīnas. Ja visi faili būs pa tiešo uz docker image, tad ātrdarbībai problēmu nebūs

Hmm, lokālajā dev vidē faili nekad nebūs pa tiešo uz docker image... Tā kā faili tiek visu laiku laboti, rakstīti klāt jauni, dzēsti utt. Tad projekta mape vienmēr ir pieslēgta caur mounted volume. Tas variants ko Tu aprakstīji ir produkcijā, bet tur jau arī MacOS nekad nebūs.

Edited by duncanf293
Link to comment
Share on other sites

48 minutes ago, briedis said:

Tu vispār mēģināji mainīt tos volume tipus pie mountošanas? consistent, cached, delegated utt.

Nē, nav mēģināts. Strādā? Tā nav īsti tāda informācija pie kuras tu nonāc tajā posmā, kad vēl tikai mācies pirmos soļus ar Docker. Pamēģināšu palietot "delegated" kādu brīdi.

8 minutes ago, werd said:

http://docker-sync.io - pieredze gan rāda, ka lielākiem projektiem tas vienā brīdī nosprūst (git checkout $FB etc.). Diemžēl sakarīga risinājuma priekš MacOS pagaidām nav.

Third-party risinājumus 0.x versijas stadijā gan ne pārāk gribas lietot, bet paldies par ieteikumu.

Link to comment
Share on other sites

2 hours ago, pcsssss said:

Vai esi drošs, ka vaina Dockerī? 
Man uz MacOS python django aplikācija ar ieslēgtām visām dev fīčām, datubāzes pieprasījumiem utt. vidēji 300ms izpildās. 

Novēroju apmēram šādu uzvedību - ja neesmu kādas 5min refrešojis lapu, tad pēc pirmā refreša load time būs lēns, kādas 3-5 sekundes. Uzreiz pēc tam atkārtoti spiežot refresh, ir labāks load time, varbūt 1-2 sekundes.

Ja atstāju mierā uz 5min vai ilgāk, tad pirmais refresh atkal aizņem 3-5 sekundes un atkārtoti refreši biški mazāk, bet tāpat ilgi.

Ok, šī varbūt nav lielākā problēma pasaulē, bet tomēr diezgan kaitinoši.

Šķiet specifiski MacOS, jo uzliekot uz produkcijas linux servera, ātrdarbības problēmas vairs nav.

Link to comment
Share on other sites

1 hour ago, duncanf293 said:

Novēroju apmēram šādu uzvedību - ja neesmu kādas 5min refrešojis lapu, tad pēc pirmā refreša load time būs lēns, kādas 3-5 sekundes. Uzreiz pēc tam atkārtoti spiežot refresh, ir labāks load time, varbūt 1-2 sekundes.

Ja atstāju mierā uz 5min vai ilgāk, tad pirmais refresh atkal aizņem 3-5 sekundes un atkārtoti refreši biški mazāk, bet tāpat ilgi.

Ok, šī varbūt nav lielākā problēma pasaulē, bet tomēr diezgan kaitinoši.

Šķiet specifiski MacOS, jo uzliekot uz produkcijas linux servera, ātrdarbības problēmas vairs nav.

Lēns "initial load" varētu būt saistīts ar DNS problēmām. Pamēģini Domain Name (ja kaut kur izmantojas, piemēram, konekcijai ar DB) vietā ierakstīt IP adresi.

Link to comment
Share on other sites

Arī kādu laiku atpakaļ cīnījos, lai paātrinātu ielādi development laikā uz MacOS.
Tik tālu esmu nonācis pie tā, ka web-app'am (uz Laravel) vendorus (t.i. composer dependencies) instalēju ārpus source foldera. Respektīvi - šie vendori netiek sync'oti starp hostu un konteineri. (kontainerī tas izskatās šādi: app source man sēž iekš /app direktorijas, bet vendori iekš /app-vendors direktorijas).

Īsāk sakot - jādara tā, lai tiek syncoti tikai vajadzīgie faili, nevis vēl visādi 3rd party faili, kurus development laikā neaiztiec, un būs laime.

Link to comment
Share on other sites

18 hours ago, ViktorsN said:

Arī kādu laiku atpakaļ cīnījos, lai paātrinātu ielādi development laikā uz MacOS.
Tik tālu esmu nonācis pie tā, ka web-app'am (uz Laravel) vendorus (t.i. composer dependencies) instalēju ārpus source foldera. Respektīvi - šie vendori netiek sync'oti starp hostu un konteineri. (kontainerī tas izskatās šādi: app source man sēž iekš /app direktorijas, bet vendori iekš /app-vendors direktorijas).

Īsāk sakot - jādara tā, lai tiek syncoti tikai vajadzīgie faili, nevis vēl visādi 3rd party faili, kurus development laikā neaiztiec, un būs laime.

Domu laikam sapratu, bet dažas lietas jāprecizē. Vendor ielikšana atsevišķā mapē pati par sevi diez vai kaut ko dod. Tas ko tu laikam gribēji pateikt ir, ka "app-vendors" ir iekopēts konteinerā ar COPY iekš Dockerfile, nevis pieslēgts caur volume? Caur volume pieslēgts tikai "app", jeb development laikā maināmais source kods?

Tas varētu tiešām būt efektīvi.

Link to comment
Share on other sites

10 hours ago, duncanf293 said:

Domu laikam sapratu, bet dažas lietas jāprecizē. Vendor ielikšana atsevišķā mapē pati par sevi diez vai kaut ko dod. Tas ko tu laikam gribēji pateikt ir, ka "app-vendors" ir iekopēts konteinerā ar COPY iekš Dockerfile, nevis pieslēgts caur volume? Caur volume pieslēgts tikai "app", jeb development laikā maināmais source kods?

Tas varētu tiešām būt efektīvi.

Yep, domu saprati. Vienīgi nevis iekopēts, bet gan build laikā tiek uzreiz sainstalēts viss iekš tā /app-vendors, jo composer.json configā norādīts path. Tas arī pie reizes atvieglo build cache saistītās lietas.
Tiesa gan bez dažiem workaroundiem neiztiku (lai pareizi darbotos package:discover komanda), konkrēti Laravelim, bet nu tas jau cits stāsts..

P.S - Priekš Composer'a iesaku vēl šādu brīnu - https://github.com/hirak/prestissimo

Edited by ViktorsN
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...