Stack PHP developement pe MacOS

M-ar interesa trecerea pe MacOS si as vrea sa stiu ce stack se foloseștecu succes pentru dezvoltare in PHP.

Eu pe Windows folosesc in acest moment: vagrant+Phpstorm.

As vrea sa stiuce funcționează OK pe Mac,. De exemplu docker-. Ma atrage mai mult docker-ul pentru ca folosește mai multe resurse, iar la un laptop e o chestie de luat in seama (nu imi dau seama cum face fata un Mac pro cu o mașina virtuala pornita)

phpstorm + wamp

1 Like

Păi cam tot ce folosești acum este disponibil și pe mac: vagrant, docker, storm. Ba chiar primele două ar trebui să meargă mai bine pe mac. :slight_smile:

Vine deja cu apache si php, macul.
Nu recomand sub nicio forma mamp.

Un MacBook Pro merge f bine cu virtualbox, al meu din 2011 cu 16GB ram de ex duce si 3 simultan daca trebuie.

E adevarat ca docker consuma mai putine resurse decat virtualbox, dar daca nu il foloseati in productie nu e neaparat sa iti faci stackul pe docker.

Iti iei pana la conferinta, sau doar prospectezi? Iti pot arata live daca vrei, inainte sa te decizi.

4 Likes

In principiu nu imi place sa am pe masina hardware soft de web php-uri, mysql, elasticsearch, redis, beanstalkd si alte povesti. NodeJS da, dar alta poveste.

Prefer setupuri virtuale (docker/vagrant), pentru ca izoleaza si simuleaza foarte bine environomentul pe care ruleaza in productie (iar in dev mode toata echipa lucreaza pe un setup identic).

Lar vagrant: mi-era frica de de 2-3 masini virtuale in acelasi timp (mai uit sa le inchid) + spatiu. Plus cateva masini virtuale incep sa ocupe ceva spatiu.

@tekkie: nu cred ca imi iau pana in conferinta,

Am folosit Vagrant o perioada. Am renuntat din lipsa de spatiu si pentru pocesul era destul de greoi (ajunsesem sa imi fac propriile imagini pentru masina virtuala cu Packer). Performance wise era ok pentru ca foloseam VMware / Parallels pentru masinile virutale, nu Virtualbox (vbox share folders are sloowwwww).

Anul asta am trecut la Docker (for Mac), care merge rezonabil. In spate foloseste Hypervisor.Framework (care bazat pe bhyve). Performanta sistemului de fisiere este proasta (HyperKit e nou, colac peste pupaza cei de la Docker au inventat un sistem de fisiere propriu), dar in ultimele versiuni au fost introduse flaguri pentru mount point-uri care ajuta cu performanta (cached si deferred, unde are prioritatea nodul gazda respectiv containerul).

2 Likes

Docker te va enerva dacă ești obișnuit cu dezvoltarea normală, cu docker trebuie să pui în environment variables chiar și setările fiindcă e stateless, baza de date trebuie rulată pe un vm separat cu un director sincronizat, aici sunt problemele, nu cu macbook-ul tău, totuși fiindcă mac-ul are un ssd ultra rapid nu vei observa scăderea vitezei și mărirea latenței la hdd cu virtualizarea în majoritatea cazurilor.

Dacă vrei să scapi de latența la HDD introdusă de virtualizare pur și simplu rulezi un script care să îți ia fișierele și baza de date din git sau cu rsync la pornire și nu mai folosești nici un sistem de fișiere virtual. (provisioning) La procesor și memorie n-ai treabă, nici măcar 1% nu e diferență. La placa video virtualizată o să ai latență în plus, sesizabilă în special la chestii realtime gen jocuri. Dacă folosești deja git e foarte ușor să faci un hook care să îți reîncarce containerul docker cu fișierele schimbate.

Când n-aveam SSD foloseam rsync și un plugin numit rsync-back ca să lucrez la un proiect cu vagrant.

În rest Mac OS e unix, instalezi apache + php + mariadb și le folosești pur și simplu. Eventual php + nginx dacă nu vrei docker.

2 Likes

As zice ca asta e un plus. Ai medii de lucru complet separat de restul calculatorului, reproductibil, usor de pornit-oprit etc. De asemenea, poti monta volume intr-un Dockerfile, care ii da accesul aplicatiei din container la restul sistemului de operare, permitand existenta de aplicatii ne-stateless. Sunt imagini de baze de date, redis etc. care merg bine-merci. Eu le folosesc chiar in mod stateless, ca pana nu opresti de tot containerul el tot exista, chiar daca e suspendat. Ceea ce e un bonus cand reusesti sa strici ceva - o iei repede de la capat.

O dificultate e ca e destul de bataie de cap sa ai un Dockerfile care e (1) rapid de reconstruit la o schimbare de cod si (2) izolat si reproductibil. Modul natural de a scrie un Dockerfile e de multe ori cel in care ai problemele de viteza cele mai mari[1]

Dar ce e cu adevarat problematic la Docker e numarul mare de bug-uri si churn-ul de feature-uri foarte mare. Azi X este the hot new thing, maine nu mai este etc. Poate e mai bine pe linux, dar pe mac e o situatie gen: cu o maina iti ia, cu alta iti da - nervi. Se imbunatatesc lucrurile insa si chiar si acum nu m-as intoarce la pre-Docker days.

Un alt mare bonus e docker-compose. Poti sa-ti faci un mic setup care oglindeste ce ai in productie. Iei imaginile deja brebaked pentru bazele de date, cache-uri etc. ce ai, le cuplezi la aplicatia/serviciile tale si cu docker-compose up pornesti tot environmentul local. Adica nu trebuie sa-ti bati capul sa le tii niste servicii inafara mediului Docker - ai totul aici.


[1] De exemplu, eu as pune ENV-urile undeva in varful Dockerfile-ului. Ei bine, cum la setul asta se tot adauga si schimba, fiecare astfel de modificare inseamna un rebuild costisitor. Asa ca trebuiesc puse cat mai jos in Dockerfile.

2 Likes

Dacă vrei să rulezi tot stackul fără virtualizare ai multe variante:

  • PHP + apache cu care vine OS-ul (de obicei versiuni vechi)
  • MAMP - cred că e cel mai popular, nu pot să discut despre feature-uri că nu l-am folosit apraope deloc
  • AMPPS - mai puțin popular însă poți face mai multe chestii din GUI (gen adăugat vhosts, schimbat versiuni de PHP/MySQL etc)
  • DIY folosind ceva package manager gen homebrew și configurezi tu totul manual

Deși personal folosesc AMPPS, nu pot să-l recomand tuturor pentru că îți ai ceva timp să te înveți cu el. Îmi amintesc doar că am trecut la el că nu mai voiam MAMP.

Dacă vrei virtualizare atunci:

  • VirtualBox e foarte stabil și nu mi-a creat niciodată probleme.
  • Față de restul soluțiilor de virtualizare care sunt multi-platform mai ai în plus Parallels. Din câte văd poate rula doar Windows, deci nu știu cât e de util.
  • Docker merge, dar depinde de tine cum îl rulezi:
    • Docker for Mac e soluția oficială, însă mulți se plâng de performanță. E încă nou lansat, personal îl consider beta.
    • Docker machine care îți rulează docker-ul într-o mașină virtuală cu Linux (o să ai nevoie de un virtual machine). Deși a fost soluție de compromis până să apară Docker for Mac, rulează mai stabil și mai rapid decât soluția nativă.

La jobul vechi foloseam Docker machine + Virtual Box și era foarte ok (stabil și fără probleme de performanță). Acum folosesc Mac-ul mai rar și de obicei pornesc AMPPS-ul pentru chestii rapide.

2 Likes

În birou avem mac-uri (și pc-uri cu Ubuntu) și folosim docker fără probleme.

Multumesc tuturor pentru feedback. Mometan eu sunt obisnuit cu vagrant/virtualbox (masinile le fac cu puphpet - plecand de la un setup general) si din ce inteleg functioneaza OK.

Next phase (alegere model) :slight_smile:

1 Like

Neaparat 16g ram pt dev machine.
In rest chiar nu conteaza.
Fie mergi pe modelul de 13 fara touchbar, singurul care a mai ramas asa, fie daca mergi pe touchbar alegi 13 sau 15 functie de buget.
Procesorul e meinteresant, eu acum dezvolt pe un air dualcore si zboara, e drept nativ, fara virtualizare.