Wpis z mikrobloga

No siema mirony, mam pytanie odnośnie dockera, a raczej docker-compose.

Mam sobie konfigurację docker-compose.yml picrel, serwisy:
- app - tutaj mam po prostu php z fpm
- web - serwer nginx
- database - baza mysql

W projekcie chcę korzystać z npm, babela i webpacka, więc jak npm to i node. No i teraz pytanko, jak to ogarnąć poprawnie, żebym mógł wydać komendę: npm install?

Do głowy przyszedł mi pomysł, żeby dodać kolejny serwis o nazwie node czy jakiś inny frontendogarniacz z dockerfile:

FROM node:11.7.0
no i wydawać komendy:
docker-compose exec frontend_ogarniacz sh -c 'npm install && npm run build' - robi się tak czy raczej #!$%@? pomysł?

Kolejny pomysł:
Czy może nie dodawać nowego serwisu tylko zainstalować node i npm w serwisie app tj. zmienić app.dockerfile:

FROM php:7.3.1-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client \
**nodejs** \ # doinstalować
&& docker-php-ext-install pdo_mysql

przebudować, i tak samo wydawać komendy:

docker-compose exec app sh -c 'npm install && npm run build'
W sumie ta druga opcja do mnie bardziej przemawia :D Doradźcie xd

#programowanie #docker
p.....u - No siema mirony, mam pytanie odnośnie dockera, a raczej docker-compose.

...

źródło: comment_gd5cLaTKdRb24bYfjbMehs5oLOzBj4KP.jpg

Pobierz
  • 10
@destyl: Właśnie też druga mi się wydaję rozsądniejsza :D

dockerfile:
FROM php:7.3.1-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client gnupg2 \
&& docker-php-ext-install pdo_mysql \
**&& curl -sL [https://deb.nodesource.com/setup_9.x](https://deb.nodesource.com/setup_9.x) | bash - **
**&& apt-get install -y nodejs
**

co dziwne zwykłe apt-get install nodejs instalowało node'a, ale jakiegoś dziwnego (wersja 4.4.cośtam) i bez npm
@prezydent_wykopu możesz też poszukać gotowego obrazu który ma PHP i NodeJs już zainstalowane. Na dockerhubie jest sporo różnych konfiguracji najpopularniejszych frameworków. Ale to będzie prawie to samo co byś zainstalował sam, z tą różnicą że obraz będzie aktualizowany przez właściciela, a o swój dockerfile musisz troszczyć się sam :)
@prezydent_wykopu: Najlepiej jakbys użył States builds czy jakoś tak. W sensie instalujesz sobie wszystko potrzebne do zainstalowania zależności. Potem bierzesz tylko artefakty i wrzucasz do nowego obrazu z minimalnym wymaganym runtime. To jest taka trzecia opcja, ale nie znam Docker compose. Rozumiem, ze on buduje obrazy za każdym razem tak?