Czym jest Dockerfile?

Dockerfile to plik tekstowy, który zawiera zestaw instrukcji służących do automatycznego tworzenia obrazów Docker. Dzięki Dockerfile można zdefiniować wszystkie potrzebne kroki do zbudowania środowiska, w którym aplikacja będzie działać. Umożliwia to łatwe i powtarzalne tworzenie środowisk programistycznych oraz produkcyjnych.

Jak działa Dockerfile?

Dockerfile wykorzystuje prostą składnię, dzięki której można określić, jakie obrazy bazowe mają być użyte, jakie pakiety mają zostać zainstalowane oraz jakie komendy mają zostać wykonane w trakcie budowy obrazu. Proces budowania obrazu z Dockerfile odbywa się za pomocą komendy docker build.

Podstawowe instrukcje Dockerfile

Oto niektóre z najczęściej używanych instrukcji w Dockerfile:

  • FROM - określa obraz bazowy, z którego ma być budowany nowy obraz.
  • RUN - wykonuje polecenie w czasie budowy obrazu, co pozwala na instalację pakietów lub uruchamianie skryptów.
  • COPY - kopiuje pliki z lokalnego systemu plików do obrazu.
  • ADD - podobnie jak COPY, ale ma dodatkowe możliwości, takie jak dekompresja archiwów.
  • CMD - definiuje domyślną komendę, która ma być uruchomiona, gdy kontener zostanie uruchomiony.
  • ENTRYPOINT - pozwala na zdefiniowanie głównego procesu, który będzie uruchamiany w kontenerze.

Przykład prostego Dockerfile

Poniżej znajduje się przykład prostego Dockerfile, który tworzy obraz dla aplikacji Node.js:

FROM node:14

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 8080

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

W tym przykładzie:

  • Obraz bazowy to node:14.
  • Ustawiamy katalog roboczy na /usr/src/app.
  • Kopiujemy pliki package.json i package-lock.json, a następnie instalujemy zależności.
  • Kopiujemy wszystkie pozostałe pliki do obrazu.
  • Otwieramy port 8080.
  • Definiujemy, że aplikacja ma być uruchomiona za pomocą polecenia node app.js.

Podsumowanie

Dockerfile to potężne narzędzie, które pozwala na automatyzację procesu budowy obrazów Docker. Dzięki dobrze skonstruowanemu Dockerfile możemy szybko i łatwo tworzyć różne środowiska dla naszych aplikacji. Używając podstawowych instrukcji, możemy dostosować obraz do naszych potrzeb, co znacznie ułatwia pracę z kontenerami.