• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Folder node_modules jest nadpisywany podczas tworzenia kontenera docker'owego.

Aruba Cloud - Virtual Private Server VPS
0 głosów
72 wizyt
pytanie zadane 29 stycznia w Systemy operacyjne, programy przez Artek87 Nowicjusz (120 p.)

Mam prostą aplikację napisaną w node js i chcę ją odpalić w kontenerze docker'owym.

Kontener uruchamiam poleceniem :
 

docker run -p 3244:80 -d --rm -v /var/www/poligon/nodejs-app-starting-setup:/app -v /app/node_modules
 zemsta_rudego

Gdy treść pliku dockerfile wygląda tak 
 

FROM node

WORKDIR /app

COPY package.json /app

RUN npm install

COPY . .

EXPOSE 80

CMD ["node", "server.js"]

I zbuduję obraz to jest dobrze, działa jak należy. Jednakże jeśli dockerfile wygląda tak 
 

FROM node

WORKDIR /app

COPY package.json /app

RUN npm install


EXPOSE 80

CMD ["node", "server.js"]

Czyli usunąłem COPY . . to już przestaje działać - nie ma folderu node_modules i nawet nie odpala aplikacji. Nie do końca rozumiem dlaczego tak się dzieje. Jeśli muszę kopiować node_modules poprzez polecenie COPY do obrazu to co się dzieje gdy jest uruchamiany npm install? Nie zapisuje tego do obrazu bezpośrednio? Jeśli nie do obrazu to co się dzieje z folderem node_modules po npm install ?

1 odpowiedź

+1 głos
odpowiedź 30 stycznia przez pr0way Nałogowiec (40,540 p.)

To "COPY . ." to kopiowanie z aktualnego katalogu w którym znajduje się Dockerfile (na twoim komputerze) do wnętrza kontenera, konkretnie do katalogu WORKDIR w tym wypadku. Jeżeli więc usuniesz ten wpis to:

1. Ustawiasz obraz bazowy na node z przy pomocy FROM.

2. Ustawiasz WORKDIR na konkretny katalog /app wewnątrz kontenera.

3.Kopiujesz plik package.json do kontenera z pomocą COPY.

4. Uruchamiasz "npm install" przy pomocy RUN który tworzy folder z zależnościami projektu (tzw. node_modules) na bazie istniejacego package.json.

Ale ponieważ nie kopiujesz do wnętrza kontenera żadnej aplikacji więc plik server.js który odpalasz na końcu poleceniem CMD po prostu nie istnieje. W efekcie kontener prawdopodobnie zakończy działanie po chwili.

Podobne pytania

0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 26 maja 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 20 stycznia 2017 w HTML i CSS przez Zainteresowany Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 660 wizyt
pytanie zadane 4 stycznia 2017 w C i C++ przez Kasztan Dyskutant (8,080 p.)

93,336 zapytań

142,331 odpowiedzi

322,415 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...