Контейнеризація додатку на Node.js за допомогою Docker

У сучасних робочих процесах розробки Docker став важливим інструментом для пакування додатків у контейнери. Контейнер — це легка, портативна та самодостатня одиниця, яка гарантує, що ваш додаток працюватиме без проблем у різних середовищах. У цій статті ми розглянемо, як контейнеризувати простий додаток на Node.js за допомогою Docker та керувати ним через Docker Compose, що полегшить розгортання та масштабування додатків.

pic

3. Розуміння структури проєкту

Надайте базове пояснення структури папок для вашого додатку на Node.js, особливо того, як вона виглядатиме після контейнеризації. Це допоможе читачам зрозуміти, де що розміщується.

Приклад структури проєкту:

/my-node-app  
 ├── app.js  
 ├── package.json  
 ├──   
 ├── Dockerfile  
 ├── docker-compose.yml
  • app.js: Головний файл додатка на Node.js.
  • package.json: Містить залежності та скрипти для запуску додатка.
  • Dockerfile: Текстовий файл, який містить інструкції для побудови Docker-образу.
  • docker-compose.yml: Визначає сервіси та налаштовує багатоконтейнерні налаштування.

Ось конфігурація для контейнеризації NodeJS проєкту. За цією конфігурацією можна контейнеризувати додаток на Node.js

файл Dockerfile

# Використовуємо офіційний образ Node.js  
FROM node:16  

# Встановлюємо робочу директорію всередині контейнера  
WORKDIR /app  

# Копіюємо package.json та package-lock.json для встановлення залежностей  
COPY package*.json ./  

# Встановлюємо залежності Node.js  
RUN npm install  

# Копіюємо код додатка в контейнер  
COPY . .  

# Відкриваємо порт, на якому буде працювати додаток  
EXPOSE 3000  

# Запускаємо додаток на Node.js  
CMD ["npm", "start"]

Щоб підготувати до продакшн-режиму, додаємо файл для Compose: docker-compose.yml

version: '3.8'  

services:  
 app:  
 build:  
 context: .  
 dockerfile: Dockerfile  
 ports:  
 - "3000:3000"  
 environment:  
 - NODE_ENV=production  
 volumes:  
 - .:/usr/src/app  
 restart: always

За допомогою цього ми можемо керувати різними середовищами та додавати інші сервіси, такі як Postgres або MySQL, або навіть служби для сповіщень.

Щоб отримати доступ до більшої кількості статей, приєднуйтесь до нашої спільноти на Discord для кращого досвіду навчання https://discord.gg/D2EU5N6z

Перекладено з: Containerizing a Node.js Application using Docker

Leave a Reply

Your email address will not be published. Required fields are marked *