সরাসরি প্রধান সামগ্রীতে চলে যান

Spring Boot Plugins or Tools for Dockerize

হ্যাঁ, Spring Boot + Gradle–এ এমন কয়েকটি plugin আছে যেগুলো JAR build → Docker image build → docker-compose up—এই পুরো workflow-টাকে automate করে দিতে পারে। অর্থাৎ তুমি একটাই Gradle command দিলে সব কিছু হয়ে যাবে।

নীচে সেরা তিনটি অপশন দিলাম।


1) Spring Boot Built-in Boot Build Image (Recommended)

Spring Boot 2.3+ থেকে built-in support আছে Docker image বানানোর জন্য। কোনো Dockerfile লাগবে না। Paketo Buildpack ব্যবহার করবে।

Gradle command

./gradlew bootJar
./gradlew bootBuildImage

Spring Boot plugin

plugins {
    id 'org.springframework.boot' version '3.4.3'
}

Output:

docker build ছাড়াই Docker image তৈরি হবে → blogger-app:latest এর মতো image বের হবে


🔥 JAR build + Docker image build — এক কমান্ডে

তুমি নিজের custom task বানাতে পারো:

tasks.register("buildAppAndImage") {
    dependsOn("bootJar", "bootBuildImage")
}

Run:

./gradlew buildAppAndImage

✔ এক কমান্ডে jar + docker image ready।


2) Jib Plugin (Google) — Dockerfile ছাড়াই Docker build (Very Popular)

Jib Spring Boot-এর জন্য দারুণ কাজ করে → JAR build ছাড়াই directly layered Docker image বানায়।

Plugin যোগ করো

plugins {
    id 'com.google.cloud.tools.jib' version '3.4.0'
}

Docker image build

./gradlew jibDockerBuild

Jib automatically:

  • jar build করে
  • layered docker image বানায়
  • Dockerfile লাগে না

Docker Compose দিয়ে চালাতে চাইলে image name bind করো:

jib {
    to {
        image = "blogger-app:latest"
    }
}

🔥 JAR + Docker → এক কমান্ডে

tasks.register("buildAll") {
    dependsOn("bootJar", "jibDockerBuild")
}

Run:

./gradlew buildAll

3) Gradle Docker Compose Plugin (Automation)

যদি docker-compose এর build-কেও automate করতে চাও → এই plugin ব্যবহার করতে পারো।

Plugin

plugins {
    id "com.avast.gradle.docker-compose" version "0.17.4"
}

Compose start:

./gradlew composeUp

Compose stop:

./gradlew composeDown

এটাকে automation chain করতে পারো:


🔥 Fully Automated Pipeline (Recommended for You)

Gradle-task বানিয়ে দাও:

tasks.register("fullPipeline") {
    dependsOn(
        "bootJar",
        "bootBuildImage",   // OR jibDockerBuild
        "composeUp"
    )
}

Run:

./gradlew fullPipeline

একমাত্র কমান্ডে → JAR build → Docker image build → Docker Compose up সব হয়ে যাবে।


🏆 কোনটা বেছে নেবে?

| Plugin | Best for | | ------------------------- | ------------------------------------------------------ | | bootBuildImage | Spring Boot নিজে থেকে docker image বানাক | | Jib | সবচেয়ে fast, lightweight, Dockerfile ছাড়াই clean image | | docker-compose plugin | Compose automation চাইলে |


যদি চাও, আমি তোমার প্রজেক্ট স্ট্রাকচার দেখে একটা ready-made Gradle script বানিয়ে দেব যেখানে:

./gradlew appUp → Jar + Docker image + Compose সব এক কমান্ডে হবে।

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

জাভা ফিডব্যাক এবং স্ট্রাকচার্ড কনকারেন্সি: বিবর্তনের গল্প

Introduction এই ভিডিওর নির্দিষ্ট অংশে জাভা ল্যাঙ্গুয়েজ আর্কিটেক্ট ব্রায়ান গোয়েটজ (Brian Goetz) আলোচনা করেছেন কীভাবে জাভার নতুন ফিচারগুলো তৈরি হয় এবং এতে সাধারণ ডেভেলপারদের মতামতের গুরুত্ব কতটুকু। বিশেষ করে Structured Concurrency -এর মতো জটিল ফিচারগুলো কেন বারবার 'Preview' অবস্থায় থাকে এবং কীভাবে কমিউনিটির ফিডব্যাক সেই ফিচারগুলোকে আরও নিখুঁত করতে সাহায্য করে, তা এখানে সহজভাবে বোঝানো হয়েছে। ১. ভালো ফিডব্যাক আসলে কী? ভিডিও রেফারেন্স: [ 34:53 ] ব্রায়ান গোয়েটজ বলছেন যে, জাভা টিম যখন কোনো নতুন ফিচারের খসড়া (Draft) বা প্রস্তাব (JEP) প্রকাশ করে, তখন তারা এমন কিছু জানতে চায় যা তারা নিজেরা আগে ভাবেনি। বিস্তারিত: একজন ডেভেলপার হিসেবে আমরা যখন কোনো নতুন ফিচার দেখি, আমাদের প্রথম প্রতিক্রিয়া হয় সেটার Syntax বা লেখার ধরন নিয়ে। কিন্তু ব্রায়ানের মতে, "এই লেখাটা কেন এমন হলো?" বা "এটা কোটলিন বা স্কালা-র মতো কেন নয়?"—এই ধরনের ফিডব্যাক খুব একটা কাজে আসে না। আসল দামী ফিডব্যাক হলো সেইটা, যা নতুন কোনো বাস্তব সমস্যা (Edge Case) তুলে ধরে। আমার চিন্তা: আপনি যদি কেবল দ...

[Master Post] Machine Learning for Everybody – Full Course

URL: https://youtu.be/i_LwzRVP7bg?t=0 Title: Machine Learning for Everybody – Full Course Topics:- মেশিন লার্নিংয়ের হাতেখড়ি এবং গুগল কোল্যাব সেটআপ মেশিন লার্নিংয়ের খুঁটিনাটি ও ফিচারের সহজ পাঠ Classification বনাম Regression এবং মডেল ট্রেনিংয়ের সহজ পাঠ মেশিন লার্নিংয়ের জন্য ডেটা তৈরি এবং প্রসেসিং করার সহজ গাইড K-Nearest Neighbors (KNN) থিওরির সহজ পাঠ কে-নিয়ারেস্ট নেইবারস (KNN) ইমপ্লিমেন্টেশন সহজ বাংলায় নেইভ বেইজ থিওরি এবং এর প্রয়োগ: সহজ পাঠ লজিস্টিক রিগ্রেশন: থিওরি ও ইমপ্লিমেন্টেশন SVM থিওরি এবং ইমপ্লিমেন্টেশন সহজ পাঠ নিউরাল নেটওয়ার্ক এবং টেনসরফ্লোর সহজ পাঠ টেনসরফ্লো দিয়ে নিউরাল নেটওয়ার্ক ক্লাসিফিকেশন শেখার সহজ গাইড লিনিয়ার রিগ্রেশন: সহজ কথায় মূল ধারণা ও গণিত লিনিয়ার রিগ্রেশন: সহজ ভাষায় খুঁটিনাটি ও হাতে-কলমে শেখা লিনিয়ার রিগ্রেশন এবং নিউরন মডেলের সহজ পাঠ TensorFlow দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ১ টেনসরফ্লো দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ২ আনসুপারভাইজড লার্নিং: কে-মিনস ক্লাস্টারিংয়ের সহজ পাঠ Principal C...