Brew a vývoj s lokálním PHP a DB i Adminerem v Dockeru
Publikováno: 13.8.2019
Provoz Brew, Dockeru, PHP a databází na OSX.
Text vyšel původně na webu
Brew: install, upgrade a cleanup
Brew je mým společníkem od dob co jsem na OSX. Pomáhá mi s instalací balíčků.
Nainstalovat PHP 7.3? No problema!
brew install php@7.3
Aktualizovat Node.js nebo yarn?
brew install nodejs yarn
brew upgrade
A co desktop aplikace? Na to je brew cask.
brew cask install transmission
brew cask install vlc
brew cask install google-chrome
brew cask install now
Jasně, kupa aplikací lze nainstalovat pekně přes dmg, ale pak je otrava je aktualizovat. S brew cask? Hračka!
brew cask upgrade
Po pořádné práci je potřeba si uklidit. Nechceme přece, aby se nám po systému válely staré a nepoužívané aplikace.
brew cleanup
Po roce používání a nečištění to pak dopadá takto:
Vývoj s lokálním PHP a DB i Adminerem v Dockeru
Zvykl jsem si používat při vývoji lokální PHP a Adminer + DB v Dockeru.
Už skoro 2 roky vyvíjím PHP aplikace bez Dockeru. Myslím tím, že mam nainstalované PHP přes Brew lokálně.
To, že je Docker na OSX pomalý, není žádná novinka, každý kdo s Dockerem někdy na OSX pracoval na to jistě narazil. Dá se to potunit ruznými způsoby, já osobně jsem si nainstaloval PHP lokálně (přes brew) a nemůžu si to vynachválit.
No jo, ale statických projektů tolik není, co s databází? Tu naopak v Dockeru spouštím.
Je libo MariaDB 10.4?
docker run \
-it \
-d \
-p 3306:3306 \
--name xproject_mariadb \
-e MYSQL_ROOT_PASSWORD=rootpw \
-e MYSQL_DATABASE=project \
-e MYSQL_USER=project \
-e MYSQL_PASSWORD=project \
mariadb:10.4
Je libo Postgres 11?
docker run \
-it \
-d \
-p 5432:5432 \
--name xproject_postgres \
-e POSTGRES_PASSWORD=project \
-e POSTGRES_USER=project \
postgres:11
Databázi bychom měli, ještě do ní budeme koukat přes Adminer. Mrkněte na image dockette/adminer, je fakt tenkej.
docker run \
-it \
-d \
-p 9999:80 \
--link xproject_adminer \
--name xproject_adminer \
dockette/adminer:dg
Na OSX je pak vychytávka v podobě host.docker.internal
, která funguje jako hostname. Kontejner s Adminerem se pak dokáže spojit s hostem a jelikož máme MariaDB kontejner vystavený na portu 3306, tak se k němu dokáže Adminer spojit.
A k tomu všemu jsem si oblíbil Makefile. Proč to celé nemít zautomatizované?
loc-mariadb: loc-mariadb-stop
docker run -it -d -p 3306:3306 --name xproject_mariadb -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_DATABASE=project -e MYSQL_USER=project -e MYSQL_PASSWORD=project mariadb:10.4
loc-mariadb-stop:
docker stop xproject_mariadb || true
docker rm xproject_mariadb || true
loc-adminer: loc-adminer-stop
docker run -it -d -p 9999:80 --link xproject_mariadb --name xproject_adminer dockette/adminer:dg
loc-adminer-stop:
docker stop xproject_adminer || true
docker rm xproject_adminer || true
loc-dev:
NETTE_DEBUG=1 php -S 0.0.0.0:8000 -t www
loc-webpack:
npm run dev
Já realně pracuji na 1 projektu naráz, ale pokud často přepínáte, můžete si udělat jednu společnou DB pro všechny projekty a nebo mít ruzné porty pro různé DB.