🚀 نحوه اجرای یک node.js + postgresql با docker

امروز ، من یک نمونه عملی و سر راست را برای کسانی که می خواهند Docker را یاد بگیرند به اشتراک می گذارم: از یک Node.js که به PostgreSQL متصل به PostgreSQL متصل هستند ، صعود کنید بدون اینکه بانک را به صورت محلی نصب کنید.
اگر وقت خود را برای تنظیم امکانات در محیط خود هدر داده اید یا باید اطمینان حاصل کنید که همه چیز در هر دستگاه یکسان است ، Docker راه حل است!
📌 ساختار پروژه
ما دو ظروف ایجاد کردیم:
🔹 Node.js برای خدمت به API
🔹 بانک PostgreSQL برای ذخیره داده ها
📦 meu-projeto-docker
┣ 📂 src
┃ ┣ 📜 main.ts
┣ 📜 Dockerfile
┣ 📜 docker-compose.yml
┣ 📜 package.json
1⃣ ایجاد node.js api
در داخل پروژه ، Package.json را شروع کنید:
npm init -y
امکانات را نصب کنید:
npm install express pg
اکنون SRC/Main.ts را ایجاد کنید:
import express from "express";
import pg from 'pg'
const { Pool } = pg
const app = express();
const pool = new Pool({
user: "postgres",
host: "db",
database: "meubanco",
password: "postgres",
port: 5432,
});
app.get("https://dev.to/", async (req, res) => {
const response = await pool.query("SELECT NOW()");
res.send(`Banco conectado! Hora atual: ${response.rows[0].now}`);
});
app.listen(3000, () => console.log("API running on port 3000"));
2⃣ ایجاد dockerfile
این پرونده تصویر API ما را تعریف می کند:
Dockerfile
FROM node:23
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "src/main.ts"]
3⃣ پیکربندی Composis Docker
در اینجا ما خدمات API و PostgreSQL را ایجاد می کنیم.
docker-compose.yml
version: "3.8"
services:
db:
image: postgres:15
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: meubanco
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
app:
build: .
restart: always
depends_on:
- db
ports:
- "3000:3000"
volumes:
- .:/app
volumes:
pgdata:
4⃣ اجرای پروژه
اکنون فقط اجرا کنید:
docker compose up -d
و به API دسترسی پیدا کنید:http://localhost:3000
به هر حال ، با Docker ، ما تضمین می کنیم که محیط ما سازگار است و از معروف “روی ماشین من کار می کند” اجتناب می کند.
این فقط آغاز بود! ما می توانیم این مجموعه را با مهاجرت ، CI/CD و Kubernetes تکامل دهیم. اگر می خواهید مطالب بیشتری از این دست داشته باشید ، در آنجا نظر دهید! 👇🔥