2015-01-23 13 views
6

Pracuję nad utworzeniem niektórych obrazów dokowania, które będą używane do testowania na komputerach typu dev. Mam zamiar zbudować jedną dla naszej głównej aplikacji, a także dla każdej z naszych zewnętrznych zależności (postgres, elasticsearch, itp.). W przypadku głównej aplikacji zmagam się z decyzją o napisaniu pliku Docker lub skompilowaniu obrazu, który ma być hostowany.Obraz Dockerfile kontra Docker

Z jednej strony plik Dockerfile można łatwo udostępniać i modyfikować w miarę upływu czasu. Z drugiej strony, spodziewam się, że zaawansowana konfiguracja (dostosowywanie plików właściwości aplikacji) będzie znacznie łatwiejsza do zrobienia w vim, zanim po prostu popełnię nowy obraz.

Rozumiem, że mogę osiągnąć ten sam wynik w obu kierunkach, ale szukam PROS, CONS i gotcha z dowolnym kierunkiem.

Na marginesie, planuję owijać to wszystko razem, używając Fig. Moje początkowe wrażenie tego narzędzia było bardzo pozytywne.

Dzięki!

+1

Ta sama dyskusja co dystrybucja aplikacji jako kodu źródłowego lub skompilowanej wersji binarnej –

+0

Interesujący sposób na to, aby ją umieścić. Nie myślałem o tym w ten sposób. –

Odpowiedz

9

Korzystanie z Dockerfile:

  • Masz dziennika kontroli „”, który opisuje, w jaki sposób obraz jest zbudowany. Jest to dla mnie fundamentalne, jeśli ma być wykorzystywane w procesie produkcyjnym, w którym pracuje więcej ludzi, a łatwość utrzymania powinna być priorytetem.
  • Możesz zautomatyzować proces budowania obrazu, będąc łatwym sposobem aktualizowania kontenera za pomocą aktualizacji systemu lub w przypadku konieczności wzięcia udziału w ciągłym procesie dostarczania.
  • Jest czystszy sposób tworzenia warstwy kontenera (każda komenda Dockerfile jest inna warstwa)

Wymiana pojemnika i popełnienie zmian jest wielki dla celów testowych i do szybkiego rozwoju dla koncepcyjnego testu . Ale jeśli planujesz użyć obrazu wyniku przez pewien czas, zdecydowanie użyłbym Dockerfiles.

Poza tym, jeśli musisz zmodyfikować plik i zrobić to za pomocą narzędzi bash (awk, sed ...) wyniki bardzo żmudne, możesz dodać dowolny plik z zewnątrz podczas procesu budowy.

+0

Przypuszczam, że mój początkowy pomysł, że mogę zrobić plik Dockerfile i po prostu wysłać go do każdego bez kontekstu jest trochę wadliwy. Zamiast edytować pliki konfiguracyjne jako polecenia RUN, zaczynam dostrzegać, że dodawanie ich jako woluminów wciąż jest miłym medium, bez konieczności pełnego oszustwa popełnienia obrazu. –

6

Całkowicie zgadzam się z Javierem, ale musisz zrozumieć, że jeden obraz utworzony za pomocą pliku dokowanego może się różnić w przypadku kompilacji obrazu z tą samą wersją pliku dokowanego 1 dzień po.

może w procesie budowania Ci pobrać automatycznie ostatnie aktualizacje aplikacji lub systemu operacyjnego itp ...

I w tym momencie, jeśli chcesz odtworzyć awarię lub cokolwiek nie można powoływać się na dockerfile.

+0

To bardzo mi pomogło. Nie mogę uwierzyć, że wcześniej o tym nie myślałem! – Baub

+2

Dockerfiles muszą w pełni określać wersje rzeczy, które wywołują i dołączają, lub otrzymacie opisane tutaj nienaruszalne zachowanie. Jeśli plik dockerfile (lub makefile lub dowolne narzędzie do budowania) generuje różne wyniki dla różnych przebiegów, to jest błędnie napisany.Jeśli narzędzie do budowania pobiera z jakiejś postaci repozytorium, które nie pozwala uzyskać tego samego za każdym razem, to repozytorium jest źle zaprojektowane. – stevegt

Powiązane problemy