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 може да предложи.