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