paint-brush
কিভাবে GitHub অ্যাকশন, Node.js, CouchDB, এবং Aptible সহ একটি ব্লগ পোস্ট অ্যাপ স্থাপনা স্বয়ংক্রিয়ভাবে করা যায়দ্বারা@wise4rmgod
3,255 পড়া
3,255 পড়া

কিভাবে GitHub অ্যাকশন, Node.js, CouchDB, এবং Aptible সহ একটি ব্লগ পোস্ট অ্যাপ স্থাপনা স্বয়ংক্রিয়ভাবে করা যায়

দ্বারা Wisdom Nwokocha19m2023/12/04
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

GitHub অ্যাকশন, Node.js, ব্যবহার করে স্বয়ংক্রিয় ব্লগ পোস্ট অ্যাপ স্থাপনার গাইডে স্বাগতম। CouchDB, এবং Aptible. এই বিস্তৃত টিউটোরিয়ালটি উপরের টুল এবং প্রযুক্তি ব্যবহার করে একটি ব্লগ পোস্ট অ্যাপ্লিকেশন তৈরি, স্থাপন এবং পরিচালনার ক্ষেত্রে আপনাকে গাইড করবে। তবে প্রথমে, আমি আপনাকে ব্লগপোস্ট অ্যাপ, এটি কী করে এবং এর প্রধান উপাদানগুলির একটি সংক্ষিপ্ত বিবরণ দিই। ব্লগপোস্ট অ্যাপ হল একটি ওয়েব অ্যাপ্লিকেশন যা ব্যবহারকারীদের ব্লগ পোস্ট তৈরি এবং শেয়ার করতে দেয়। ব্যবহারকারীরা অন্য ব্যবহারকারীদের পোস্ট লিখতে, সম্পাদনা করতে, মুছতে এবং দেখতে পারেন। অ্যাপটি ব্যাকএন্ড হিসেবে Node.js, ডাটাবেস হিসেবে CouchDB এবং ক্রমাগত ইন্টিগ্রেশন এবং ডিপ্লয়মেন্ট টুল হিসেবে GitHub অ্যাকশন ব্যবহার করে।
featured image - কিভাবে GitHub অ্যাকশন, Node.js, CouchDB, এবং Aptible সহ একটি ব্লগ পোস্ট অ্যাপ স্থাপনা স্বয়ংক্রিয়ভাবে করা যায়
Wisdom Nwokocha HackerNoon profile picture

GitHub অ্যাকশন, Node.js, ব্যবহার করে একটি ব্লগ পোস্ট অ্যাপ স্থাপনা স্বয়ংক্রিয় করার গাইডে স্বাগতম।

CouchDB, এবং Aptible.


এই বিস্তৃত টিউটোরিয়ালটি উপরের টুল এবং প্রযুক্তি ব্যবহার করে একটি ব্লগ পোস্ট অ্যাপ্লিকেশন তৈরি, স্থাপন এবং পরিচালনার ক্ষেত্রে আপনাকে গাইড করবে।


তবে প্রথমে, আমি আপনাকে ব্লগপোস্ট অ্যাপ, এটি কী করে এবং এর প্রধান উপাদানগুলির একটি সংক্ষিপ্ত বিবরণ দিই। ব্লগপোস্ট অ্যাপ হল একটি ওয়েব অ্যাপ্লিকেশন যা ব্যবহারকারীদের ব্লগ পোস্ট তৈরি এবং শেয়ার করতে দেয়।


ব্যবহারকারীরা অন্য ব্যবহারকারীদের পোস্ট লিখতে, সম্পাদনা করতে, মুছতে এবং দেখতে পারেন। অ্যাপটি ব্যাকএন্ড হিসেবে Node.js, ডাটাবেস হিসেবে CouchDB এবং ক্রমাগত ইন্টিগ্রেশন এবং ডিপ্লয়মেন্ট টুল হিসেবে GitHub অ্যাকশন ব্যবহার করে।


কেন আমি এই নির্বাচন? ঠিক আছে, অনেক কারণ আছে, কিন্তু এখানে কিছু প্রধান কারণ আছে:


  • Node.js হল একটি দ্রুত, মাপযোগ্য, এবং সহজে ব্যবহারযোগ্য JavaScript রানটাইম পরিবেশ যা বিভিন্ন প্ল্যাটফর্মে চলতে পারে। এটিতে ওয়েব ডেভেলপমেন্টের জন্য অনেক লাইব্রেরি এবং ফ্রেমওয়ার্ক রয়েছে, যেমন এক্সপ্রেস, একটি মিনিমালিস্ট এবং নমনীয় ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক যা আমি এই প্রকল্পে ব্যবহার করব।


  • CouchDB হল একটি ওপেন সোর্স NoSQL ডাটাবেস সিস্টেম যা নির্ভরযোগ্য, সুরক্ষিত এবং শক্তিশালী। এটি একটি নথি-ভিত্তিক ডাটাবেস যা ডেটা সঞ্চয় করতে JSON ব্যবহার করে।


  • GitHub অ্যাকশন হল একটি নমনীয়, সুবিধাজনক এবং সমন্বিত টুল যা আপনাকে আপনার GitHub রিপোজিটরির জন্য ওয়ার্কফ্লো স্বয়ংক্রিয় করতে দেয়। এটিতে অনেকগুলি প্রি-বিল্ট অ্যাকশনও রয়েছে যা আপনি আপনার প্রয়োজনের জন্য ব্যবহার করতে বা কাস্টমাইজ করতে পারেন, যেমন Aptible Deploy action, যা আমি এই প্রকল্পে অ্যাপটিকে অ্যাপটিবলে স্থাপন করতে ব্যবহার করব।


  • Aptible হল একটি ক্লাউড-ভিত্তিক প্ল্যাটফর্ম যা কনটেইনারাইজড অ্যাপ্লিকেশন স্থাপন এবং পরিচালনা করার জন্য, সহজ বিধান, স্কেলিং এবং পর্যবেক্ষণ ক্ষমতা প্রদান করে।

পূর্বশর্ত

উন্নয়ন যাত্রা শুরু করার আগে, প্রয়োজনীয় সরঞ্জাম এবং প্রযুক্তি স্থাপন অপরিহার্য।


  • Node.js: নিশ্চিত করুন যে আপনার মেশিনে Node.js ইনস্টল করা আছে।


  • CouchDB: CouchDB আপনার সিস্টেমে ইনস্টল এবং চলমান আছে কিনা যাচাই করুন।


  • Node.js এবং JavaScript দক্ষতা: Node.js এবং JavaScript মৌলিক বিষয়গুলির একটি দৃঢ় বোঝার অধিকারী।


  • ডকার: আপনার মেশিনে ডকার ইনস্টল করুন এবং চালান।


  • উপযুক্ত অ্যাকাউন্ট: একটি উপযুক্ত অ্যাকাউন্ট তৈরি করুন এবং একটি মৌলিক অ্যাপ্লিকেশন স্থাপনের সাথে নিজেকে পরিচিত করুন।


  • ডকার ক্লাউড অ্যাকাউন্ট: আপনার অ্যাপ্লিকেশন হোস্ট করতে একটি ডকার ক্লাউড অ্যাকাউন্ট অর্জন করুন।

ব্লগপোস্ট অ্যাপ ডেভেলপ করা হচ্ছে

1: আপনার Node.js প্রকল্প সেট আপ করুন

  • আপনার ব্লগ পোস্ট অ্যাপের জন্য একটি প্রকল্প ডিরেক্টরি তৈরি করুন।


  • npm ব্যবহার করে একটি Node.js প্রকল্প শুরু করুন:
 npm init -y


  • Express.js ফ্রেমওয়ার্ক ইনস্টল করুন, যা ব্যাকএন্ডের ভিত্তি হিসেবে কাজ করবে:
 npm install express nano

ধাপ 2: CouchDB সেট আপ করুন

  • নিশ্চিত করুন CouchDB ইনস্টল এবং চলমান আছে. আপনি http://127.0.0.1:5984/_utils/ এ আপনার ব্রাউজারের মাধ্যমে CouchDB অ্যাক্সেস করতে পারেন।


CouchDB ড্যাশবোর্ড

ধাপ 3: আপনার Node.js অ্যাপ্লিকেশন তৈরি করুন

  • আপনার প্রকল্প ডিরেক্টরিতে একটি blog.js ফাইল তৈরি করুন।


  • এক্সপ্রেস আরম্ভ করুন, এবং এটি CouchDB এর সাথে সংযুক্ত করুন:
 const express = require("express"); const nano = require("nano")("http://admin:[email protected]:5984"); const app = express(); const port = 3000; // Middleware to parse JSON data app.use(express.json()); // async function asyncCall() { // // await nano.db.destroy("alice"); // await nano.db.create("blogposts"); // const db = nano.use("blogposts"); // return response; // } // asyncCall(); const db = nano.use("blogposts");


  • এই কোডটি একটি CouchDB ডাটাবেস ব্যবহার করে ব্লগ পোস্ট তৈরি, পুনরুদ্ধার, আপডেট এবং মুছে ফেলার জন্য API এন্ডপয়েন্টকে সংজ্ঞায়িত করে।


 // Create a new blog post app.post("/posts", async (req, res) => { const { title, description, author } = req.body; try { const doc = await db.insert({ title, description, author, createdAt: new Date(), updatedAt: new Date(), }); res.json({ id: doc.id, rev: doc.rev }); } catch (err) { console.error(err); res.status(500).send("Error creating post"); } }); // Get all blog posts app.get("/posts", async (req, res) => { try { const docs = await db.list({ include_docs: true }); res.json(docs.rows); } catch (err) { console.error(err); res.status(500).send("Error retrieving posts"); } }); // Get a specific blog post app.get("/posts/:id", async (req, res) => { const { id } = req.params; try { const doc = await db.get(id); res.json(doc); } catch (err) { console.error(err); res.status(404).send("Post not found"); } }); // Update a blog post app.put("/posts/:id", async (req, res) => { const { id } = req.params; const { title, description } = req.body; try { await db.insert({ _id: id, title, description, updatedAt: new Date(), }); res.json({ message: "Post updated successfully" }); } catch (err) { console.error(err); res.status(500).send("Error updating post"); } }); // Delete a blog post app.delete("/posts/:id", async (req, res) => { const { id } = req.params; try { await db.destroy(id); res.json({ message: "Post deleted successfully" }); } catch (err) { console.error(err); res.status(500).send("Error deleting post"); } }); app.listen(port, () => { console.log(`Blogpost app listening on port ${port}`); });


স্থানীয়ভাবে এটি পরীক্ষা করা হচ্ছে:

আপনার প্রকল্পের কার্যকারিতা এবং দৃঢ়তা নিশ্চিত করার জন্য পুঙ্খানুপুঙ্খ পরীক্ষা অত্যন্ত গুরুত্বপূর্ণ। আপনার পরীক্ষার প্রক্রিয়াকে গাইড করার জন্য এখানে একটি নমুনা API ডকুমেন্টেশন রয়েছে:

API ডকুমেন্টেশন

ভিত্তি URL :

আপনার সার্ভারটি স্থানীয়ভাবে 3000 পোর্টে চলছে বলে ধরে নিলে, আপনার API-এর ভিত্তি URL হবে:

 http://localhost:3000

API শেষ পয়েন্ট:

একটি নতুন ব্লগ পোস্ট তৈরি করুন

  • শেষ পয়েন্ট : POST /posts

  • বর্ণনা : একটি নতুন ব্লগ পোস্ট তৈরি করে।

  • অনুরোধের বডি :

     { "title": "String", "description": "String", "author": "String" }
  • উদাহরণ :

     POST http://localhost:3000/posts { "title": "Sample Title", "description": "Sample Description", "author": "John Doe" }

সব ব্লগ পোস্ট পান

  • শেষ পয়েন্ট : GET /posts

  • বর্ণনা : সমস্ত ব্লগ পোস্ট পুনরুদ্ধার করে.

  • প্রতিক্রিয়া :

     [ { "id": "String", "key": "String", "value": { "rev": "String" }, "doc": { "_id": "String", "_rev": "String", "title": "String", "description": "String", "author": "String", "createdAt": "Date", "updatedAt": "Date" } } ]
  • উদাহরণ :

     GET http://localhost:3000/posts

একটি নির্দিষ্ট ব্লগ পোস্ট পান

  • এন্ডপয়েন্ট : GET /posts/:id

  • বর্ণনা : এর আইডি দ্বারা একটি নির্দিষ্ট ব্লগ পোস্ট পুনরুদ্ধার করে।

  • পরামিতি :

    • id : ব্লগ পোস্টের আইডি।
  • প্রতিক্রিয়া :

     { "_id": "String", "_rev": "String", "title": "String", "description": "String", "author": "String", "createdAt": "Date", "updatedAt": "Date" }
  • উদাহরণ :

     GET http://localhost:3000/posts/your-post-id

একটি ব্লগ পোস্ট আপডেট করুন

  • এন্ডপয়েন্ট : PUT /posts/:id

  • বর্ণনা : একটি নির্দিষ্ট ব্লগ পোস্ট এর ID দ্বারা আপডেট করে।

  • পরামিতি :

    • id : ব্লগ পোস্টের আইডি।
  • অনুরোধের বডি :

     { "title": "String", "description": "String" }
  • উদাহরণ :

     PUT http://localhost:3000/posts/your-post-id { "title": "Updated Title", "description": "Updated Description" }

একটি ব্লগ পোস্ট মুছুন

  • এন্ডপয়েন্ট : DELETE /posts/:id

  • বর্ণনা : তার আইডি দ্বারা একটি নির্দিষ্ট ব্লগ পোস্ট মুছে দেয়।

  • পরামিতি :

    • id : ব্লগ পোস্টের আইডি।
  • উদাহরণ :

     DELETE http://localhost:3000/posts/your-post-id


GET , PUT , এবং DELETE অনুরোধগুলি পরীক্ষা করার সময় অনুগ্রহ করে your-post-id ব্লগ পোস্টের একটি আসল আইডি দিয়ে প্রতিস্থাপন করুন৷

ধাপ 4: আপনার Node.js অ্যাপ্লিকেশন ডকারাইজ করুন

আপনার একটি ডকার হাব অ্যাকাউন্ট থাকতে হবে। আপনি যদি এখনও একটি তৈরি না করে থাকেন তবে ডকার হাবে সাইন আপ করুন৷

আপনার স্থানীয় মেশিনে ডকার ইনস্টল এবং চলমান আছে তা নিশ্চিত করুন।

ডকার হাবে ডকারাইজড অ্যাপ পুশ করার পদক্ষেপ:

  • আপনার Node.js প্রকল্পের রুট ডিরেক্টরিতে একটি Dockerfile তৈরি করুন।
 # Use an official Node.js runtime as the base image FROM node:16 # Set the working directory in the container WORKDIR /usr/src/app # Copy package.json and package-lock.json to the working directory COPY package*.json ./ # Install app dependencies RUN npm install # Copy the rest of the application files to the working directory COPY . . # Expose the port the app runs on EXPOSE 3000 # Define the command to run the app CMD ["node", "blog.js"]
  • আপনার ডকার ইমেজ ট্যাগ করুন: আপনার টার্মিনাল/কমান্ড প্রম্পট খুলুন এবং আপনার Node.js অ্যাপ্লিকেশনের রুট ডিরেক্টরিতে নেভিগেট করুন, যেখানে আপনার ডকারফাইল অবস্থিত।


আপনার ডকার ইমেজ তৈরি করতে নিম্নলিখিত কমান্ডটি চালান এবং আপনার ডকার হাব ব্যবহারকারীর নাম এবং পছন্দসই সংগ্রহস্থলের নাম দিয়ে ট্যাগ করুন:


 docker build -t your-docker-username/blogpost-app:latest .

your-docker-username আপনার ডকার হাব ব্যবহারকারীর নাম এবং blogpost-app আপনার পছন্দসই সংগ্রহস্থলের নাম দিয়ে প্রতিস্থাপন করুন।


আপনি এই মত একটি অনুরূপ প্রতিক্রিয়া পাবেন:

 [+] Building 1.1s (10/10) FINISHED docker:desktop-linux => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 489B 0.0s => [internal] load metadata for docker.io/library/node:16 1.0s => [1/5] FROM docker.io/library/node:16@sha256:f77a1aef2da8d83e45ec990f45df50f1a286c5fe8bbfb8c6e4246c6389705c0b 0.0s => [internal] load build context 0.0s => => transferring context: 45.31kB 0.0s => CACHED [2/5] WORKDIR /usr/src/app 0.0s => CACHED [3/5] COPY package*.json ./ 0.0s => CACHED [4/5] RUN npm install 0.0s => CACHED [5/5] COPY . . 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:c5f046a9b99389aea6bf3f503e9b05cce953daf1b3f77ee5fb3f7469dc36c709 0.0s => => naming to docker.io/wise4rmgod/blogpost-app:latest


  • ডকার হাবে লগ ইন করুন: নিম্নলিখিত কমান্ডটি কার্যকর করে আপনার ডকার হাব অ্যাকাউন্টের সাথে আপনার ডকার ক্লায়েন্টকে প্রমাণীকরণ করুন:
 docker login


অনুরোধ করা হলে আপনার ডকার হাব ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

 Authenticating with existing credentials... Login Succeeded


  • ডকার হাবে ডকার ইমেজটি পুশ করুন: একবার লগ ইন করলে, নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার ট্যাগ করা ডকার ইমেজটিকে আপনার ডকার হাবের সংগ্রহস্থলে পুশ করুন:
 docker push your-docker-username/blogpost-app:latest

এই কমান্ডটি আপনার নির্দিষ্ট সংগ্রহস্থলের অধীনে ডকার হাবে আপনার স্থানীয় চিত্র আপলোড করে।


  • পুশ যাচাই করুন: ওয়েবে আপনার ডকার হাব অ্যাকাউন্টে যান এবং আপনার ডকার ইমেজ সফলভাবে পুশ করা হয়েছে তা নিশ্চিত করতে আপনার সংগ্রহস্থলে নেভিগেট করুন।

    ডকার ক্লাউড ড্যাশবোর্ড



 aptible deploy --app reactgame --docker-image wise4rmgod/blogpost-app --private-registry-username wise4rmgod --private-registry-password H$(_tS+W~ZBST63

ধাপ 5: উপযুক্ত স্থাপন

এই টিউটোরিয়ালটি অনুমান করে যে আপনি উপযুক্ত প্ল্যাটফর্মে একটি পরিবেশ , অ্যাপ্লিকেশন , এন্ডপয়েন্ট, এবং ডাটাবেস সেট আপ করার প্রাথমিক ধারণা পেয়েছেন। টিউটোরিয়ালটি ডাটাবেস হিসাবে CouchDB ব্যবহার করে এবং স্থাপনার জন্য সরাসরি ডকার নিয়োগ করে।


  • নিম্নলিখিত কমান্ড ব্যবহার করে CLI এর মাধ্যমে Aptible এ লগ ইন করুন:
 aptible login


আপনাকে আপনার ইমেল এবং পাসওয়ার্ড লিখতে বলা হবে। সফল হলে, আপনি এর অনুরূপ একটি প্রতিক্রিয়া পাবেন:

 Token written to /Users/wisdomnwokocha/.aptible/tokens.json This token will expire after 6 days, 23 hrs (use --lifetime to customize)


  • এখন, নিম্নলিখিত কমান্ড ব্যবহার করে আপনার অ্যাপ স্থাপন করুন:

বাক্য গঠন:

 aptible deploy --app <app name> --docker-image <docker image in cloud>


এখানে একটি উদাহরণ কমান্ড:

 aptible deploy --app reactgame --docker-image wise4rmgod/blogpost-app


আপনি নিম্নলিখিত অনুরূপ একটি প্রতিক্রিয়া পাবেন:

 INFO -- : Starting App deploy operation with ID: 61135861 INFO -- : Deploying without git repository INFO -- : Writing .aptible.env file... INFO -- : Fetching app image: wise4rmgod/blogpost-app... INFO -- : Pulling from wise4rmgod/blogpost-app INFO -- : 26ee4ff96582: Pulling fs layer INFO -- : 446eab4103f4: Pulling fs layer INFO -- : 2e3c22a0f840: Pulling fs layer INFO -- : a7ab8ad9b408: Pulling fs layer INFO -- : 3808fdf0c601: Pulling fs layer INFO -- : ab9e4075c671: Pulling fs layer INFO -- : 362360c8cef6: Pulling fs layer INFO -- : 928b5d11ac66: Pulling fs layer INFO -- : dc87e077ac61: Pulling fs layer INFO -- : f108e80f4efc: Pulling fs layer INFO -- : 84ac53840ac8: Pulling fs layer INFO -- : e81f21b79a1f: Pulling fs layer INFO -- : 2e3c22a0f840: Downloading: 523 KB / 49.8 MB INFO -- : 446eab4103f4: Downloading: 173 KB / 16.6 MB INFO -- : 26ee4ff96582: Downloading: 483 KB / 47 MB INFO -- : 2e3c22a0f840: Downloading: 25.7 MB / 49.8 MB INFO -- : a7ab8ad9b408: Downloading: 528 KB / 175 MB INFO -- : ab9e4075c671: Downloading: 355 KB / 33.4 MB INFO -- : a7ab8ad9b408: Downloading: 35.3 MB / 175 MB INFO -- : 26ee4ff96582: Pull complete INFO -- : 446eab4103f4: Pull complete INFO -- : 2e3c22a0f840: Pull complete INFO -- : a7ab8ad9b408: Downloading: 71.2 MB / 175 MB INFO -- : a7ab8ad9b408: Downloading: 106 MB / 175 MB INFO -- : a7ab8ad9b408: Downloading: 142 MB / 175 MB INFO -- : a7ab8ad9b408: Pull complete INFO -- : 3808fdf0c601: Pull complete INFO -- : ab9e4075c671: Pull complete INFO -- : 362360c8cef6: Pull complete INFO -- : 928b5d11ac66: Pull complete INFO -- : dc87e077ac61: Pull complete INFO -- : f108e80f4efc: Pull complete INFO -- : 84ac53840ac8: Pull complete INFO -- : e81f21b79a1f: Pull complete INFO -- : Digest: sha256:de9d04d069ca89ebdb37327365a815c88cd40d90cbc5395cc31c351fff1206dd INFO -- : Status: Downloaded newer image for wise4rmgod/blogpost-app:latest INFO -- : No Procfile found in git directory or /.aptible/Procfile found in Docker image: using Docker image CMD INFO -- : No .aptible.yml found in git directory or /.aptible/.aptible.yml found in Docker image: no before_release commands will run INFO -- : Pushing image dualstack-v2-registry-i-0a5ec8cff8e775b34.aptible.in:46022/app-63213/72184c41-7dc6-4313-b10e-749125f72577:latest to private Docker registry... INFO -- : The push refers to repository [dualstack-v2-registry-i-0a5ec8cff8e775b34.aptible.in:46022/app-63213/72184c41-7dc6-4313-b10e-749125f72577] INFO -- : dd387bc6b362: Pushed INFO -- : 586bd9d5efcf: Pushed INFO -- : 8ae0c889ca84: Pushed INFO -- : c91ec53bcc27: Pushing: 522 KB / 93.6 MB INFO -- : aec897bac4f0: Pushed INFO -- : 0ead224631d3: Pushed INFO -- : ad3b30eb29d3: Pushing: 542 KB / 444 MB INFO -- : 2a7587eb01b6: Pushing: 544 KB / 137 MB INFO -- : be36d2a441aa: Pushed INFO -- : 03f6e3800bbe: Pushed INFO -- : a10e482288d1: Pushing: 338 KB / 30.7 MB INFO -- : f9cfc9f6b603: Pushing: 513 KB / 103 MB INFO -- : c91ec53bcc27: Pushing: 31.3 MB / 93.6 MB INFO -- : c91ec53bcc27: Pushing: 62.7 MB / 93.6 MB INFO -- : ad3b30eb29d3: Pushing: 44.5 MB / 444 MB INFO -- : 2a7587eb01b6: Pushing: 34.4 MB / 137 MB INFO -- : a10e482288d1: Pushed INFO -- : ad3b30eb29d3: Pushing: 88.9 MB / 444 MB INFO -- : f9cfc9f6b603: Pushing: 34.6 MB / 103 MB INFO -- : 2a7587eb01b6: Pushing: 68.9 MB / 137 MB INFO -- : ad3b30eb29d3: Pushing: 133 MB / 444 MB INFO -- : f9cfc9f6b603: Pushing: 70.2 MB / 103 MB INFO -- : c91ec53bcc27: Pushed INFO -- : 2a7587eb01b6: Pushing: 103 MB / 137 MB INFO -- : ad3b30eb29d3: Pushing: 178 MB / 444 MB INFO -- : ad3b30eb29d3: Pushing: 224 MB / 444 MB INFO -- : 2a7587eb01b6: Pushed INFO -- : f9cfc9f6b603: Pushed INFO -- : ad3b30eb29d3: Pushing: 270 MB / 444 MB INFO -- : ad3b30eb29d3: Pushing: 312 MB / 444 MB INFO -- : ad3b30eb29d3: Pushing: 355 MB / 444 MB INFO -- : ad3b30eb29d3: Pushing: 401 MB / 444 MB INFO -- : ad3b30eb29d3: Pushed INFO -- : latest: digest: sha256:de9d04d069ca89ebdb37327365a815c88cd40d90cbc5395cc31c351fff1206dd size: 2841 INFO -- : Pulling from app-63213/72184c41-7dc6-4313-b10e-749125f72577 INFO -- : Digest: sha256:de9d04d069ca89ebdb37327365a815c88cd40d90cbc5395cc31c351fff1206dd INFO -- : Status: Image is up to date for dualstack-v2-registry-i-0a5ec8cff8e775b34.aptible.in:46022/app-63213/72184c41-7dc6-4313-b10e-749125f72577:latest INFO -- : Image app-63213/72184c41-7dc6-4313-b10e-749125f72577 successfully pushed to registry. INFO -- : STARTING: Register service cmd in API INFO -- : COMPLETED (after 0.28s): Register service cmd in API INFO -- : STARTING: Derive placement policy for service cmd INFO -- : COMPLETED (after 0.15s): Derive placement policy for service cmd INFO -- : STARTING: Create new release for service cmd INFO -- : COMPLETED (after 0.24s): Create new release for service cmd INFO -- : STARTING: Schedule service cmd .. INFO -- : COMPLETED (after 13.49s): Schedule service cmd INFO -- : STARTING: Stop old app containers for service cmd INFO -- : COMPLETED (after 0.0s): Stop old app containers for service cmd INFO -- : STARTING: Start app containers for service cmd INFO -- : WAITING FOR: Start app containers for service cmd INFO -- : WAITING FOR: Start app containers for service cmd INFO -- : COMPLETED (after 18.4s): Start app containers for service cmd INFO -- : STARTING: Delete old containers for service cmd in API INFO -- : COMPLETED (after 0.0s): Delete old containers for service cmd in API INFO -- : STARTING: Commit app containers in API for service cmd INFO -- : COMPLETED (after 0.26s): Commit app containers in API for service cmd INFO -- : STARTING: Commit service cmd in API INFO -- : COMPLETED (after 0.13s): Commit service cmd in API INFO -- : STARTING: Cache maintenance page INFO -- : COMPLETED (after 0.28s): Cache maintenance page INFO -- : STARTING: Commit app in API INFO -- : COMPLETED (after 0.19s): Commit app in API INFO -- : App deploy successful.


  • স্থাপন সফল হয়েছে তা নিশ্চিত করতে Aptible ড্যাশবোর্ডে যান।

  • ড্যাশবোর্ডের এন্ডপয়েন্ট ট্যাবে ক্লিক করুন এবং এন্ডপয়েন্টটি সেভ করুন। এটি আপনাকে সর্বজনীন ইন্টারনেটে আপনার ডাটাবেস প্রকাশ করার অনুমতি দেবে।

  • একটি নতুন এন্ডপয়েন্ট তৈরি করতে পরবর্তী স্ক্রিনে Add Endpoint এ ক্লিক করুন।

উপসংহার

এই ব্যাপক টিউটোরিয়ালটি আপনাকে Node.js, CouchDB এবং Aptible-এর সাথে একটি ব্লগ পোস্ট অ্যাপ্লিকেশন তৈরি, স্থাপন এবং পরিচালনা করতে সহায়তা করবে।


আপনি প্রয়োজনীয় সরঞ্জাম এবং প্রযুক্তিগুলি সেট আপ করার, ব্লগ পোস্ট অ্যাপ্লিকেশনটির ব্যাকএন্ড তৈরি করা, অ্যাপ্লিকেশনটিকে ডকারাইজ করা, ডকার ইমেজটিকে ডকার হাবে ঠেলে দেওয়া এবং অ্যাপ্লিকেশনটিকে অ্যাপটিবলে স্থাপন করার মৌলিক বিষয়গুলি উপলব্ধি করেছেন৷


এই ব্যাপক টিউটোরিয়ালটি সম্পূর্ণ করার জন্য এবং অ্যাপটিবল ব্যবহার করে ক্লাউড-নেটিভ অ্যাপ্লিকেশন ডেভেলপমেন্টে আপনার যাত্রার জন্য অভিনন্দন!