ظروف mutliple را با آهنگسازی dockerize کنید

از مورد استفاده کنید – آنچه را که حل می کند
بنابراین اگر تاکنون با ظروف داکر آشنا هستید (اگر اینطور نیست ، دو مقاله قبلی من را در این مورد بخوانید) ،
هنگامی که بیش از 1 ظرف وجود دارد و آنها باید در تعامل باشند ، مواردی وجود دارد که باید آنها را تکرار کنید ، مانند:
- کشیدن تصویر و ایجاد یک ظرف.
- تخصیص حجم ، گذر از env و غیره به کانتینر
- تمام ظروف را در همان شبکه اجرا کنید
بشر
حال اگر 3،4،5 ، .. یا بیشتر وجود داشته باشد ، شدیدتر می شود ، ببینید این به کجا می رود؟ Docker آهنگسازی را حل می کند ، با “آهنگسازی” پیکربندی ظروف خود را در یک نوع فایل به نام “یام” (مشابه آن به JSON – یک قالب داده ، معمولاً برای پیکربندی ها).
شما هنوز مواردی مانند Dockerfile دارید و مفاهیم ظروف یکسان هستند ، فقط فرایندی که ساده تر است.
بیایید آن را تنظیم کنیم
یک نمونه سریع از 3 ظروف که با استفاده از آهنگسازی Docker در حال چرخش هستند.
بنابراین این چیزی است که ما می خواهیم تنظیم کنیم:
- یک سرور گره JS که کلید تصادفی را می نویسد ، مقادیر Redis DB
- سپس تغییرات را از Redis Insight بررسی می کنیم.
بیایید با نوشتن کد برای این سرور node.js شروع کنیم:
یک بسته NPM را اولیه کنید:
npm init -y
npm install express redis
کد برای سرور Node.js:
const express = require("express");
const redis = require("redis");
const app = express();
const client = redis.createClient({ url: process.env.REDIS_URL });
client.connect();
app.get("/", async (req, res) => {
const randomKey = `key_${Math.floor(Math.random() * 1000)}`;
const randomValue = `value_${Math.floor(Math.random() * 1000)}`;
await client.set(randomKey, randomValue);
res.send(`stored random K-V pair: ${randomKey} = ${randomValue}`);
});
app.listen(3000, () => console.log("Server running on port 3000"));
سپس نوشتن یک dockerfile برای ایجاد این ظرف در یک ظرف:
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "server.js"]
در نهایت ، یک پرونده “docker-compose.yaml” تهیه کنید:
version: "3.8"
services:
api:
build: .
ports:
- "3000:3000"
depends_on:
- redis
environment:
REDIS_URL: redis://redis:6379
redis:
image: redis:latest
ports:
- "6379:6379"
redisinsight:
image: redis/redisinsight:latest
ports:
- "5540:5540"
restart: unless-stopped
از این طریق بخوانید ، متوجه خواهید شد که هنوز مفاهیم مشابهی مانند Dockerfile ، Ports و محیط زیست را دارید.
و شبکه بین این ظروف چیست؟ از آنجا که ما مجبور شدیم این کار را به صورت دستی انجام دهیم ، Docker-Compose همه اینها را در یک شبکه قرار می دهد ، بنابراین لازم نیست با آن مقابله کنید.
روشی که یک ظرف به دیگری اشاره دارد هنوز یکسان است ، به عنوان مثالبا Redis-Insight به Redis Contaner به عنوان redis اشاره خواهد کرد: // 6379
سپس این کار را با دستور اجرا کنید:
docker compose up -d #d means run in background (detached mode)
حالا بیایید این را آزمایش کنیم:
curl http://localhost:3000 #via curl
wget http://localhost:3000 #via wget
یا فقط از مرورگر خود استفاده کنید
- سپس در Redis-Insight بررسی کنید:
با نمونه Redis ارتباط برقرار کنید:
به جفت های ارزش کلید تصادفی اضافه شده مراجعه کنید:
برای مراجعه بیشتر به پیکربندی YAML Docker-Compose ، این را بررسی کنید
سعی کنید ظروف بیشتری را با آهنگسازی Docker بسازید ، تا بتوانید تجربه خود را تجربه کنید ، می توانید سعی کنید:
- یک برنامه CRUD: یک برنامه Node.js + React را با مقداری DB (PG ، MySQL ، Redis) بسازید
- مانیتور DB: PG DB ، از صادر کننده PG برای پرومتئوس ، با پرومتئوس و گرافانا استفاده کنید. بنابراین pg -> صادر کننده -> prometheus -> grafana (و برخی از سرور برای نوشتن به PG)
به هر حال ، این در مورد آن است.
شاید من با چند نمونه چیزهای بیشتری را با Docker بپوشانم ، یا در مورد Docker Swarm در مورد بعدی صحبت کنم!