ساخت ایمیجهای Spring Boot: پیکربندی پروکسی سازندهٔ Paketo
متغیرهای پروکسی را از طریق Gradle bootBuildImage یا Maven image.env به سازندهٔ Paketo بدهید، جدا از ابزار ساخت و دیمن Docker.
ابزار ساخت میتواند وابستگیهایش را با موفقیت حل کند، در حالی که buildpack پکتو نمیتواند محیط اجرا را دانلود کند. buildpack داخل کانتینر سازنده اجرا میشود و به ورودی پروکسی خودش نیاز دارد.
وظیفهٔ bootBuildImage در Gradle
در یک build.gradle گرووی که از وظیفهٔ موجود bootBuildImage در Spring Boot استفاده میکند:
tasks.named("bootBuildImage") {
environment["HTTP_PROXY"] = "http://proxy.example:8080"
environment["HTTPS_PROXY"] = "http://proxy.example:8080"
}
افزونهٔ Maven از image.env استفاده میکند
برای spring-boot:build-image، این مقادیر را زیر image.env در پیکربندی موجود افزونهٔ Maven اسپرینگ بوت قرار دهید:
<configuration>
<image>
<env>
<HTTP_PROXY>http://proxy.example:8080</HTTP_PROXY>
<HTTPS_PROXY>http://proxy.example:8080</HTTPS_PROXY>
</env>
</image>
</configuration>
هم محیط وظیفهٔ Gradle و هم image.env در Maven مقدارها را به سازنده میدهند. هر دو نام میتوانند به همان واسطهٔ معمولی HTTP اشاره کنند، از جمله برای نشانیهای HTTPS مصنوعات. برای دانلودهای عمومی مصنوعات که از طریق پروکسیهای عمومی مجاز است، فهرست پروکسی HTTP نامزدهایی برای این مقادیر سازنده فراهم میکند.
این تنظیم از ویژگیهای systemProp.http.proxyHost در Gradle مستقل است. آنها متعلق به JVM هستند و فرایند دیگری را در سازنده بهطور خودکار پیکربندی نمیکنند.
دیمن Docker ابتدا باید ایمیجهای سازنده و اجرای لازم را بهدست آورد. شکست رجیستری در آن مرحلهٔ پیشین به مسیر و پیکربندی رجیستری دیمن نیاز دارد، نه به متغیری که به buildpackی داده شود که هنوز شروع نشده است.
از نقطهٔ پایانی پروکسی استفاده کنید که از کانتینر سازنده قابل دسترسی باشد. نشانی loopback آن همان کانتینر را مشخص میکند، نه لزوماً ایستگاه کاری توسعهدهنده.
محیط اجرای برنامهٔ نهایی را هم آگاهانه نگه دارید. دسترسی هنگام ساخت و مسیری که هنگام اجرای بعدی برنامه استفاده میشود دو تصمیم پیکربندی جداگانهاند.