Docker е мощна платформа, която позволява на разработчиците да изграждат, внедряват и изпълняват приложения в контейнери. Контейнерите улесняват пакетирането на приложения с всичките им зависимости, което ги прави преносими и лесни за внедряване в различни среди. В тази статия ще ви преведем през контейнеризирането на Node.js приложение с помощта на най-новата версия на Node.js и Docker. Освен това ще обясним някои основни Docker команди и как да разберете Dockerfile.

Основни Docker команди:

Ето някои основни Docker команди, с които трябва да сте запознати:

  • docker pull <image>: Изтегля изображение от Docker Hub (хранилище за изображения).
  • docker images: Изброява всички налични изображения локално.
  • docker run <image>: Изпълнява контейнер от изображение.
  • docker ps: Изброява всички работещи контейнери.
  • docker ps -a: Изброява всички контейнери, включително тези, които не работят.
  • docker stop <container>: Спира работещ контейнер.
  • docker rm <container>: Премахва неработещ контейнер.
  • docker rmi <image>: Премахва локално изображение.

Разбиране на Dockerfile:

Dockerfile е текстов файл, който съдържа инструкции за изграждане на Docker изображение. Ето някои общи директиви, използвани в Dockerfile:

  • FROM: Указва основното изображение, от което изграждате.
  • RUN: Изпълнява команди в нов слой и създава ново изображение.
  • CMD: Осигурява настройки по подразбиране за работещ контейнер.
  • ENTRYPOINT: Позволява ви да конфигурирате контейнер, който ще работи като изпълним файл.
  • COPY: Копира файлове и директории от локалната файлова система в контейнера.
  • ADD: Копира файлове и директории от локалната файлова система в контейнера, като същевременно поддържа отдалечени URL адреси и компресирани файлове.
  • EXPOSE: Информира Docker, че контейнерът слуша посочените мрежови портове по време на изпълнение.
  • WORKDIR: Задава работната директория за последващи инструкции в Dockerfile.
  • ENV: Задава променливи на средата.

Стъпка 1: Актуализирайте вашата версия на Node.js

Преди да започнем, нека актуализираме вашата версия на Node.js до най-новата. Към момента на писане на тази статия най-новата LTS (дългосрочна поддръжка) версия е Node.js 16.

Стъпка 2: Създайте просто приложение Node.js

За демонстрационни цели, нека създадем просто „Hello, World!“ приложение, използващо Express. Създайте нова директория за вашето приложение и в нея създайте файл с име app.js със следното съдържание:

const express = require('express');
const app = express();
const port = 8080;

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

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

Също така създайте файл package.json в същата директория със следното съдържание:

{
  "name": "docker-node-example",
  "version": "1.0.0",
  "description": "A simple Node.js application containerized with Docker",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

Стъпка 3: Създайте Dockerfile

В същата директория като вашето приложение Node.js създайте файл с име Dockerfile със следното съдържание:

# Base image
FROM node:16

# Working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the application code
COPY . .

# Expose the port
EXPOSE 8080

# Start the application
CMD [ "npm", "start" ]

Този Dockerfile задава базовото изображение като Node.js 16, създава работна директория, копира файловете на зависимостите, инсталира зависимостите, копира останалата част от кода на приложението, излага порт 8080 и стартира приложението.

Стъпка 4: Създайте изображението на Docker

docker build -t docker-node-example .

Тази команда ще създаде Docker изображение с име docker-node-example.

Стъпка 5: Стартирайте Docker контейнера

За да стартирате Docker контейнер от създаденото изображение, използвайте следната команда:

docker run -p 8080:8080 -d docker-node-example

Тази команда свързва порта 8080 на контейнера с порта 8080 на вашата локална машина и изпълнява контейнера във фонов режим.

Стъпка 6: Тествайте приложението

Отворете браузъра си и отворете http://localhost:8080. Трябва да видите „Hello, World!“ съобщение.

Заключение:

В тази статия демонстрирахме как да контейнеризираме Node.js приложение с помощта на Docker и най-новата версия на Node.js. Docker е мощен инструмент, който може да ви помогне да рационализирате процеса на разработка, като улеснявате внедряването и стартирането на приложения в различни среди. Като следвате тези стъпки, можете да контейнеризирате вашите Node.js приложения и да се възползвате от предимствата, които Docker може да предложи.