DockerfilePlik konfiguracyjny, który zawiera instrukcje do budowania obrazu Dockera. Jest to skrypt, który definiuje, jak zbudować obraz kontenera, w tym jakie pliki skopiować, jakie polecenia uruchomić i jakie ustawienia zastosować.
DockerfileFROM node:iron
COPY . .
RUN npm install
CMD ["npm", "run", "dev"]
💡 Hint: Po instalacji pluginu “Docker” w edytorze Visual Studio Code, podczas wypełniania pliku
Dockerfilebędziemy otrzymywali podpowiedzi.
FROM - źródło budowania obrazuWORKDIR - ustawienie katalogu w którym będą wykonywane kolejne zadaniaCOPY - kopiowanie pliku z systemu operacyjnego do obrazuRUN - uruchomienie polecenia na potrzeby zbudowania obrazuCMD — uruchomienie polecenia po starcie konteneraEXPOSE - otwarcie portu w kontenerzeENV - ustawienie zmiennej środowiskowejVOLUME - utworzenie katalogu, który będzie współdzielony z systemem operacyjnymARG - zmienna, która może być przekazana podczas budowania obrazuLABEL - metadane obrazuHEALTHCHECK - sprawdzenie stanu zdrowia konteneraUSER - ustawienie użytkownika, który będzie uruchamiał kontenerSHELL - ustawienie powłoki, która będzie używana do wykonywania poleceńSTOPSIGNAL - ustawienie sygnału, który będzie wysyłany do kontenera podczas zatrzymywaniaONBUILD - polecenie, które zostanie wykonane podczas budowania obrazu bazowegoFROM# Stabilna wersja obrazu ze skonfigurowanym Node.js
FROM node
# Uniwersalny obraz
FROM busybox
# Minimalistyczna wersja obrazu z Alpine Linux
FROM node:11.14.0-alpine
# Wersja obrazu z Node.js w wersji "iron"
# (wersja "iron" jest jedną z wersji LTS Node.js)
FROM node:iron
WORKDIRWORKDIR /home/node/app
WORKDIR /app
COPY# UWAGA: brak cache-a dockerowego
COPY . .
COPY package*.json ./
RUNRUN npm install
CMDCMD npm run dev
CMD ["npm", "run", "dev"]
EXPOSEEXPOSE 3000
ENVENV NODE_ENV=production
ENV PORT=3000
VOLUMEVOLUME /home/node/app
VOLUME /app
ARGARG NODE_VERSION=11.14.0
FROM node:${NODE_VERSION}-alpine
LABELLABEL maintainer="piecioshka"
LABEL version="1.0"
LABEL description="Dockerfile for Node.js application"
HEALTHCHECKHEALTHCHECK --interval=30s --timeout=30s \
CMD curl -f http://localhost:3000/ || exit 1
USERUSER node
USER root
SHELLSHELL ["/bin/sh", "-c"]
SHELL ["/bin/bash", "-c"]
STOPSIGNALSTOPSIGNAL SIGTERM
ONBUILDONBUILD RUN echo "This will run on build of the image that uses this as a base image"
ONBUILD COPY . /app
ONBUILD RUN npm install