Công cụ build có thể phân giải thành công các phụ thuộc của nó, nhưng buildpack Paketo lại không thể tải một runtime. Buildpack chạy bên trong container của builder và cần đầu vào proxy riêng.

Tác vụ bootBuildImage của Gradle

Trong build.gradle Groovy có tác vụ bootBuildImage sẵn có của Spring Boot:

tasks.named("bootBuildImage") {
    environment["HTTP_PROXY"] = "http://proxy.example:8080"
    environment["HTTPS_PROXY"] = "http://proxy.example:8080"
}

Plugin Maven dùng image.env

Với spring-boot:build-image, đặt các giá trị này dưới image.env trong cấu hình plugin Spring Boot Maven hiện có:

<configuration>
  <image>
    <env>
      <HTTP_PROXY>http://proxy.example:8080</HTTP_PROXY>
      <HTTPS_PROXY>http://proxy.example:8080</HTTPS_PROXY>
    </env>
  </image>
</configuration>

Cả môi trường tác vụ của Gradle lẫn image.env của Maven đều cung cấp giá trị cho builder. Cả hai tên có thể chỉ cùng một trung gian HTTP thông thường, kể cả với URL artefact HTTPS. Với các lượt tải artefact công khai được cho phép qua proxy công khai, danh sách proxy HTTP cung cấp ứng viên cho các giá trị builder này.

Cấu hình này độc lập với các thuộc tính systemProp.http.proxyHost của Gradle. Chúng thuộc về JVM và không tự động cấu hình một tiến trình khác trong builder.

Daemon Docker trước hết phải lấy các image builder và image chạy cần thiết. Sự cố registry ở giai đoạn trước đó cần tuyến đường và cấu hình registry của daemon, chứ không phải một biến truyền cho buildpack chưa khởi động.

Dùng một endpoint proxy có thể truy cập từ container của builder. Địa chỉ loopback của nó nhận diện chính container đó, không nhất thiết là máy trạm của lập trình viên.

Cũng hãy giữ môi trường chạy của ứng dụng cuối một cách có chủ đích. Truy cập lúc build và tuyến đường dùng khi ứng dụng chạy về sau là hai quyết định cấu hình riêng biệt.

Bài viết liên quan