Jak vytvořit aplikaci Node.js s Dockerem

Docker představuje platformu pro kontejnerizaci aplikací, která umožňuje jejich vytváření, nasazování a provoz v izolovaných prostředích, tzv. kontejnerech. Tyto kontejnery jsou přenosné a soběstačné softwarové jednotky, které zahrnují vše nezbytné pro svůj běh, včetně programového kódu, knihoven a závislostí.

Tento článek vás krok za krokem provede procesem vytváření Node.js aplikace za pomoci Dockeru. Naučíte se, jak vygenerovat Dockerfile, sestavit a spustit Docker image a jak svou aplikaci nasadit do Docker kontejneru.

Požadované nástroje a software

  • Node.js nainstalované ve vašem systému
  • Docker nainstalovaný ve vašem systému
  • Textový editor (například Visual Studio Code, Atom)

Seznámení s Dockerem

Docker je nástroj pro kontejnerizaci, který umožňuje zabalení a izolaci aplikací do kontejnerů. Kontejnery fungují jako přenosné a samostatné softwarové jednotky, které obsahují vše, co je potřebné pro jejich správný běh, včetně zdrojového kódu, knihoven a veškerých závislostí.

Docker kontejnery vycházejí z Docker obrazů. Docker image je šablona, ze které jsou kontejnery generovány. Docker obrazy se vytvářejí pomocí Dockerfilů, textových souborů definujících instrukce pro sestavení Docker image.

Vytvoření Node.js aplikace

Nejprve si vytvořte nový adresář pro vaši Node.js aplikaci:


mkdir my-node-app
cd my-node-app

V nově vytvořeném adresáři vytvořte soubor s názvem app.js a přidejte do něj následující kód:

javascript
const express = require('express');

const app = express();

app.get('/', (req, res) => {
res.send('Hello, world!');
});

app.listen(3000, () => {
console.log('Server listening on port 3000');
});

Tento kód vytvoří jednoduchou Node.js aplikaci, která reaguje na HTTP GET požadavky na adrese / zprávou „Hello, world!“. Aplikace naslouchá na portu 3000.

Vytvoření Dockerfile

Dále, v adresáři vaší aplikace, vytvořte soubor s názvem Dockerfile a vložte do něj tento obsah:


FROM node:16-slim

WORKDIR /usr/src/app

COPY package.json .
RUN npm install

COPY . .

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

Pojďme si vysvětlit jednotlivé řádky Dockerfile:

  • FROM node:16-slim: Tento řádek specifikuje základní Docker image, který budeme používat. V tomto případě jde o základní image Node.js verze 16-slim.
  • WORKDIR /usr/src/app: Tento řádek nastavuje pracovní adresář pro následující příkazy v Dockerfile.
  • COPY package.json .: Tento řádek zkopíruje soubor package.json do pracovního adresáře kontejneru.
  • RUN npm install: Tento řádek spustí příkaz npm install uvnitř kontejneru, který nainstaluje závislosti Node.js aplikace definované v souboru package.json.
  • COPY . .: Tento řádek zkopíruje zbytek kódu vaší aplikace do pracovního adresáře kontejneru.
  • CMD ["node", "app.js"]: Tento řádek udává příkaz, který se má spustit při spuštění kontejneru. V tomto případě je to příkaz node, který spustí naši Node.js aplikaci v souboru app.js.

Sestavení Docker image

Pro sestavení Docker image, spusťte následující příkaz v adresáři vaší aplikace:


docker build -t my-node-app .

Tento příkaz sestaví Docker image s názvem my-node-app.

Spuštění Docker kontejneru

Pro spuštění Docker kontejneru zadejte tento příkaz:


docker run -p 3000:3000 my-node-app

Tento příkaz spustí Docker kontejner s názvem my-node-app a přesměruje port 3000 kontejneru na port 3000 vašeho hostitelského systému.

Nasazení aplikace do produkce

Po vývoji a otestování vaší aplikace v Docker kontejneru ji můžete nasadit do produkčního prostředí. Můžete k tomu využít platformy jako Docker Hub, Amazon Elastic Container Service (ECS) nebo Google Kubernetes Engine (GKE).

Závěr

V tomto článku jsme si prošli procesem tvorby Node.js aplikace s využitím Dockeru. Naučili jste se, jak vytvořit Dockerfile, sestavit a spustit Docker image a jak nasadit vaši aplikaci do Docker kontejneru. Docker je mocný nástroj pro kontejnerizaci, který může usnadnit vývoj, testování a nasazování aplikací.

Často kladené otázky

1. Co je to Docker?

Docker je platforma pro kontejnerizaci aplikací, která umožňuje vytvářet, nasazovat a provozovat aplikace v izolovaných prostředích nazývaných kontejnery.

2. Co je to kontejner?

Kontejner je přenosná a soběstačná jednotka softwaru, která obsahuje vše nezbytné pro své spuštění, včetně kódu, knihoven a závislostí.

3. Co je Docker image?

Docker image je šablona, ze které jsou kontejnery vytvářeny. Docker images se generují pomocí Dockerfilů, které jsou textovými soubory s definicí instrukcí pro sestavení Docker image.

4. Jaký je rozdíl mezi Dockerem a virtualizací?

Virtualizace vytváří virtuální stroje, které jsou kompletními operačními systémy s vlastními jádry a hardwarovými zdroji. Docker naopak vytváří kontejnery, které sdílejí jádro a hardwarové zdroje s hostitelským systémem.

5. Jaké jsou výhody použití Dockeru?

Docker nabízí řadu výhod, včetně:

  • Izolace: Kontejnery izolují aplikace od sebe navzájem a od hostitelského systému.
  • Přenositelnost: Kontejnery se snadno přenášejí mezi různými hostitelskými systémy a cloudovými platformami.
  • Škálovatelnost: Kontejnery lze jednoduše škálovat dle potřeby.
  • Efektivita: Kontejnery jsou efektivnější než virtuální stroje, protože sdílejí jádro a hardwarové zdroje s hostitelským systémem.

6. Jaké jsou některé běžné příkazy Dockeru?

  • docker build: Používá se pro sestavení Docker image.
  • docker run: Používá se pro spuštění Docker kontejneru.
  • docker ps: Používá se pro zobrazení běžících kontejnerů.
  • docker stop: Používá se pro zastavení běžícího kontejneru.
  • docker remove: Používá se pro odstranění kontejneru nebo Docker image.

7. Jaké zdroje mohu použít pro další informace o Dockeru?

8. Jaká jsou omezení Dockeru?

Docker má určitá omezení, například:

  • Sdílení dat mezi kontejnery může být komplikované.
  • Kontejnery mohou být náchylné k úniku dat a dalším bezpečnostním problémům.
  • Docker může být náročný na zdroje, zvláště při provozování velkého počtu kontejnerů.