GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Vytvořte od začátku jednoduchý kontejner Node.js Hello World Docker

V úvodním příspěvku Dockerfile jsem představil jednoduchý příklad Node.js Dockerfile:

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.

Použijme tento Dockerfile k vytvoření obrazu a poté spusťte kontejner.

Tento soubor vytvořím v dev/docker/examplenode složka. Vytvořím jednoduchou aplikaci Node.js v app.js pomocí Express:

const express = require('express')
const app = express()

app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => console.log('Server ready'))

Super jednoduché, ale máme jednu závislost. Potřebuji jej přidat do package.json soubor, tak spustím

npm init -y
npm install express

Nyní můžete spustit node app.js a ujistěte se, že to funguje:

Zastavte tento proces a pojďme z něj vytvořit Docker Image.

Vše, co potřebujete, je app.js , package.json a package-lock.json soubory.

A Dockerfile. Vytvořte Dockerfile soubor ve stejné složce, bez přípony (nikoli Dockerfile.txt).

node_modules můžete libovolně smazat složku, která nyní obsahuje knihovnu Express a její závislosti, ale můžete také vytvořit .dockerignore a přidejte node_modules uvnitř, aby Docker tuto složku zcela ignoroval.

Funguje to jako .gitignore v Gitu.

Spusťte příkaz

docker build -t examplenode .

Stažení obrazu Node a spuštění npm install bude chvíli trvat , pak dostanete úspěšnou zprávu.

Je důležité si uvědomit, že po prvním stažení základního obrázku, jako je node ten, který zde používáme, bude ukládán do mezipaměti lokálně, takže jej nemusíte znovu stahovat a proces vytváření obrazu bude mnohem rychlejší.

Nyní můžeme spustit kontejner z obrázku:

docker run -d -p 3000:3000 --name node-app examplenode

Nyní můžete vidět obrázek spuštěný v Docker Desktop:

A kliknutím na tlačítko „Otevřít v prohlížeči“ otevřete aplikaci běžící na portu 3000:

Jako předtím! Až na to, že nyní aplikace běží ve svém vlastním kontejneru, zcela izolovaně, a v kontejneru můžeme spouštět jakoukoli verzi Node, kterou chceme, se všemi výhodami, které nám Docker poskytuje.

Můžete například odstranit kontejner a spustit jej na portu 80 namísto 3000 pomocí:

docker run -d -p 80:3000 --name node-app examplenode

Obrázek se nemusí měnit, vše, co změníte, je mapování portů. Zde je výsledek:


Docker
  1. Jak spustit příkaz na spuštěném kontejneru Docker

  2. Jak se odpojit od dockerového kontejneru bez zastavení

  3. Jak vytvořit vlastní obrázek z kontejneru Docker

  1. Jak spustit Nginx v kontejneru Docker:Průvodce krok za krokem

  2. Jak spustit MySQL v Docker Container:Jednoduchý a snadno sledovatelný průvodce

  3. Jak vytvořit Docker Image z kontejneru a Dockerfile

  1. Jak spustit program uvnitř kontejneru Docker?

  2. Extrahovat soubor z obrázku Dockeru?

  3. Jak spustit MySQL v kontejneru Docker