Wpis z mikrobloga

Stawiam swoje pierwsze kroki w Dockerze i jestem nieco skonfundowany.

Najpierw stworzyłem prostą aplikację crudową w Javie i Postgresie, a że nie miałem zainstalowanego Postgresa, to pobrałem jego obraz komendą docker pull i uruchomiłem kontener komendą docker run i wszystko śmigało

Potem stworzyłem aplikację z użyciem Node. Na kompie miałem wersję 18, a potrzebowałem 14, więc stworzyłem plik Dockerfile, który tworzył obraz z Node 14. Zorientowałem się, że za każdym razem kiedy dodaję nową zależność przez npm to muszę stworzyć nowy obraz i kopiować do niego zaktualizowane pliki. W poprzednim projekcie z postgresem wystarczyło że stworzyłem obraz raz i mogłem dodawać i usuwać biblioteki do woli bez konieczności informowania o tym Dockera. Od czego zatem zależy to, że w jednym projekcie muszę kopiować pliki projektu i tworzyć nowy obraz za każdym razem gdy dodam nową zależność, a w drugim nie? #docker #programowanie
  • 2
@placebo_: O ile dobrze zrozumialem w opcji z postgresem odpaliles sobie kontener z obrazu postgresa i na już odpalonym kontenerze doinstalowałeś pozostałe biblioteki?
W takim wypadku gdybyś ten kontener usunął i utworzył na nowo stracił byś swoje zmiany. Niby jest opcja żeby utworzyć obraz z tego kontenera ale zazwyczaj nie w ten sposób to się robi.
A robi się właśnie Dockerfile. I robisz to po to, żeby potem ten plik dockerfile
@placebo_: poczytaj jak działają warstwy. Pewnie gdzieś masz magiczne COPY, które sprawia, że pliki się zmieniły a zmiana w plikach -> trzeba przebudować następną warstwę