Spring Boot ইমেজ বিল্ড: Paketo বিল্ডারের প্রক্সি কনফিগার করুন
Gradle bootBuildImage বা Maven image.env-এর মাধ্যমে Paketo বিল্ডারে প্রক্সি ভেরিয়েবল পাঠান, বিল্ড টুল ও Docker ডেমন থেকে আলাদাভাবে।
একটি বিল্ড টুল তার নির্ভরতাগুলো সফলভাবে সমাধান করতে পারে, কিন্তু Paketo বিল্ডপ্যাক রানটাইম ডাউনলোড করতে পারে না। বিল্ডপ্যাকটি বিল্ডার কন্টেইনারের ভেতরে চলে এবং এর নিজস্ব প্রক্সি ইনপুট দরকার।
Gradle-এর bootBuildImage টাস্ক
Spring Boot-এর বিদ্যমান bootBuildImage টাস্ক ব্যবহার করা একটি Groovy build.gradle-এ:
tasks.named("bootBuildImage") {
environment["HTTP_PROXY"] = "http://proxy.example:8080"
environment["HTTPS_PROXY"] = "http://proxy.example:8080"
}
Maven প্লাগইন image.env ব্যবহার করে
spring-boot:build-image-এর জন্য, এই মানগুলো বিদ্যমান Spring Boot Maven প্লাগইন কনফিগারেশনের image.env-এর অধীনে রাখুন:
<configuration>
<image>
<env>
<HTTP_PROXY>http://proxy.example:8080</HTTP_PROXY>
<HTTPS_PROXY>http://proxy.example:8080</HTTPS_PROXY>
</env>
</image>
</configuration>
Gradle-এর টাস্ক এনভায়রনমেন্ট এবং Maven-এর image.env—দুটোই বিল্ডারকে মান সরবরাহ করে। দুটি নামই একই সাধারণ HTTP মধ্যস্থতাকারীকে বোঝাতে পারে, HTTPS আর্টিফ্যাক্ট URL-এর ক্ষেত্রেও। পাবলিক প্রক্সির মাধ্যমে অনুমোদিত পাবলিক আর্টিফ্যাক্ট ডাউনলোডের জন্য HTTP প্রক্সি তালিকা এই বিল্ডার মানগুলোর জন্য প্রার্থী দেয়।
এই সেটিং Gradle-এর systemProp.http.proxyHost বৈশিষ্ট্য থেকে স্বাধীন। সেগুলো JVM-এর এবং বিল্ডারের ভেতরের অন্য প্রক্রিয়াকে স্বয়ংক্রিয়ভাবে কনফিগার করে না।
Docker ডেমনকে প্রথমে প্রয়োজনীয় বিল্ডার ও রান ইমেজ পেতে হবে। সেই আগের পর্যায়ে রেজিস্ট্রি ব্যর্থ হলে ডেমননের রুট ও রেজিস্ট্রি কনফিগারেশন লাগে, এখনো শুরু হয়নি এমন বিল্ডপ্যাকে দেওয়া ভেরিয়েবল নয়।
বিল্ডার কন্টেইনার থেকে পৌঁছানো যায় এমন একটি প্রক্সি এন্ডপয়েন্ট ব্যবহার করুন। এর লুপব্যাক ঠিকানাই সেই কন্টেইনার চিহ্নিত করে, অগত্যা ডেভেলপারের ওয়ার্কস্টেশন নয়।
চূড়ান্ত অ্যাপ্লিকেশনের রানটাইম এনভায়রনমেন্টও সচেতনভাবে রাখুন। বিল্ডের সময়ের অ্যাক্সেস আর অ্যাপ্লিকেশন পরে চলার সময় ব্যবহৃত রুট দুটি আলাদা কনফিগারেশন সিদ্ধান্ত।