Dockerfile
Plik 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ć.
Dockerfile
FROM node:iron
COPY . .
RUN npm install
CMD ["npm", "run", "dev"]
💡 Hint: Po instalacji pluginu “Docker” w edytorze Visual Studio Code, podczas wypełniania pliku
Dockerfile
bę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
WORKDIR
WORKDIR /home/node/app
WORKDIR /app
COPY
# UWAGA: brak cache-a dockerowego
COPY . .
COPY package*.json ./
RUN
RUN npm install
CMD
CMD npm run dev
CMD ["npm", "run", "dev"]
EXPOSE
EXPOSE 3000
ENV
ENV NODE_ENV=production
ENV PORT=3000
VOLUME
VOLUME /home/node/app
VOLUME /app
ARG
ARG NODE_VERSION=11.14.0
FROM node:${NODE_VERSION}-alpine
LABEL
LABEL maintainer="piecioshka"
LABEL version="1.0"
LABEL description="Dockerfile for Node.js application"
HEALTHCHECK
HEALTHCHECK --interval=30s --timeout=30s \
CMD curl -f http://localhost:3000/ || exit 1
USER
USER node
USER root
SHELL
SHELL ["/bin/sh", "-c"]
SHELL ["/bin/bash", "-c"]
STOPSIGNAL
STOPSIGNAL SIGTERM
ONBUILD
ONBUILD RUN echo "This will run on build of the image that uses this as a base image"
ONBUILD COPY . /app
ONBUILD RUN npm install