Читать книгу Docker w praktyce - Ian Miell - Страница 17

1.2.2. Tworzenie Dockerfile

Оглавление

Dockerfile to plik tekstowy zawierający serię poleceń. Listing 1.1 to Dockerfile, którego będziemy używać jako przykładu. Utwórzmy nowy folder, przejdźmy do niego i utwórzmy plik o nazwie „Dockerfile” z poniższą zawartością.

Listing 1.1. Dockerfile dla todoapp

FROM node

Definicja bazowego obrazu

LABEL maintainer ian.miell@gmail.com

Informacja o opiekunie obrazu

RUN git clone -q https://github.com/docker-in-practice/todo.git

Klonowanie kodu todoapp

WORKDIR todo

Przejście do nowego, sklonowanego katalogu

RUN npm install > /dev/null

Uruchomienie polecenia install z managera pakietów (npm)

EXPOSE 8000

Określenie, że kontenery ze zbudowanego obrazu powinny nasłuchiwać na tym porcie

CMD["npm","start"]

Określenie, które polecenia będą wykonywane podczas uruchamiania

Dockerfile rozpoczynamy od zdefiniowania obrazu podstawowego za pomocą polecenia FROM. Ten przykład używa obrazu Node.js, zatem będziemy mieć dostęp do plików binarnych Node.js. Oficjalny obraz Node.js jest nazwany node.

Następnie deklarujemy opiekuna obrazu za pomocą polecenia LABEL. W tym przypadku używamy jednego z naszych adresów e-mailowych, ale możesz go zastąpić własnym odwołaniem, ponieważ jest to teraz twój plik Dockerfile. Ta linia nie jest wymagana do utworzenia działającego dockerowego obrazu, ale włączenie tego jest dobrą praktyką. W tym momencie budowanie odziedziczyło stan bazowego kontenera i jesteśmy gotowi do pracy nad nim.

Następnie za pomocą komendy RUN klonujemy kod todoapp. Do pobrania kodu aplikacji ­używamy konkretnego polecenia, uruchamiając git w kontenerze. W tym przypadku Git był zainstalowany wewnątrz obrazu podstawowego, ale nie możemy uznawać tego za rzecz oczywistą.

Teraz za pomocą komendy WORKDIR przechodzimy do nowego sklonowanego katalogu. W budowanym kontekście zmienia to nie tylko katalogi, bo ostatnie polecenie WORKDIR określa, w którym katalogu domyślnie się znajdziemy, gdy uruchomimy swój kontener ze zbudowanego obrazu.

Następnie uruchamiamy polecenie install z managera pakietów (npm). Spowoduje to skonfigurowanie zależności dla aplikacji. W tym przykładzie nie interesuje nas wynik, zatem przekierowujemy go do /dev/null.

Ponieważ aplikacja wykorzystuje port 8000, używamy polecenia EXPOSE, aby powiedzieć Dockerowi, że kontenery ze zbudowanego obrazu powinny nasłuchiwać na tym porcie.

Na koniec używamy polecenia CMD, aby powiedzieć Dockerowi, które polecenia mają zostać wykonane po uruchomieniu kontenera.

Ten prosty przykład ilustruje kilka kluczowych cech Dockera i Dockerfile. Plik Dockerfile to prosta sekwencja ograniczonego zestawu poleceń uruchamianych w ścisłej kolejności. Wpływa ona na pliki i metadane obrazu wynikowego. Polecenie RUN wpływa w tym przypadku na system plików, pobierając i instalując aplikację, a polecenia EXPOSE, CMD i WORKDIR wpływają na metadane obrazu.

Docker w praktyce

Подняться наверх