Dockerfile je recept na vytvoření obrazu Docker.
Toto je pracovní postup:nejprve vytvoříte soubor Dockefile a poté z něj vytvoříte obrázek Docker pomocí docker build
a nakonec spustíte kontejner z obrázku.
Dockerfile je textový soubor s pokyny, jak vytvořit obrázek.
Tyto instrukce jsou součástí konfiguračního jazyka, který obsahuje klíčová slova jako FROM
, LABEL
, RUN
, COPY
, ENTRYPOINT
, CMD
, EXPOSE
, ENV
a další.
Pojďme vytvořit náš první Dockerfile:
Řekněme, že máte složku s jednoduchou aplikací Node.js složenou z app.js
, package.json
soubor, který uvádí několik závislostí, které je třeba nainstalovat před spuštěním aplikace, a package-lock.json
.
Uvnitř vytvořte prostý textový soubor s názvem Dockerfile
, bez přípony, s tímto obsahem:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json app.js ./
RUN npm install
EXPOSE 3000
CMD ["node", "app.js"]
POZNÁMKA:používejte dvojité uvozovky v
CMD
čára. Jednoduché uvozovky způsobí chybu.
V prvním řádku si řekneme, od kterého obrázku chceme začít. Toto bude náš základní obrázek. V tomto případě převezme oficiální obrázek Node.js založený na Alpine Linuxu pomocí Node 14. Při vytváření kontejneru z Dockerfile získá Docker tento obrázek z Docker Hub.
Dále nastavíme pracovní adresář na /usr/src/app
, což znamená, že všechny naše příkazy budou spouštěny v této složce, dokud ji znovu nezměníme. To je složka, o které víme, že již existuje v obrazu Node.
Zkopírujeme package.json
, package-lock.json
(pomocí *
zástupný znak) a app.js
soubory, které se nacházejí v aktuální složce, do pracovního adresáře.
Spustíme npm install
k instalaci balíčků uvedených v package.json
soubor.
Poté vystavíme port 3000 navenek, protože na tom naše aplikace běží. Kontejner je 100% izolován od sítě, pokud jeden z jeho portů neodhalíte pomocí EXPOSE
příkaz. Později uvidíme, jak můžeme mapovat porty v našem počítači na porty v kontejneru Docker.
Nakonec spustíme node app.js
spusťte aplikaci.
Toto je Dockerfile a brzy uvidíme, jak z něj skutečně vytvořit kontejner.