Tôi đang làm dự án đại học nơi chúng tôi cần chạy nhiều ứng dụng Spring Boot cùng một lúc.
Tôi đã cấu hình xây dựng nhiều giai đoạn với hình ảnh docker gradle và sau đó chạy ứng dụng trong hình ảnh openjdk: jre.
Đây là Dockerfile của tôi:
FROM gradle:5.3.0-jdk11-slim as builder
USER root
WORKDIR /usr/src/java-code
COPY . /usr/src/java-code/
RUN gradle bootJar
FROM openjdk:11-jre-slim
EXPOSE 8080
WORKDIR /usr/src/java-app
COPY --from=builder /usr/src/java-code/build/libs/*.jar ./app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
Tôi đang xây dựng và chạy mọi thứ với docker-compose. Một phần của docker-compose:
website_server:
build: website-server
image: website-server:latest
container_name: "website-server"
ports:
- "81:8080"
Tất nhiên xây dựng đầu tiên mất tuổi. Docker đang kéo tất cả các phụ thuộc của nó. Và tôi ổn với điều đó.
Hiện tại mọi thứ đều hoạt động tốt nhưng mỗi thay đổi nhỏ trong mã gây ra khoảng 1 phút thời gian xây dựng cho một ứng dụng.
Một phần của nhật ký xây dựng: docker-compose up --build
Step 1/10 : FROM gradle:5.3.0-jdk11-slim as builder
---> 668e92a5b906
Step 2/10 : USER root
---> Using cache
---> dac9a962d8b6
Step 3/10 : WORKDIR /usr/src/java-code
---> Using cache
---> e3f4528347f1
Step 4/10 : COPY . /usr/src/java-code/
---> Using cache
---> 52b136a280a2
Step 5/10 : RUN gradle bootJar
---> Running in 88a5ac812ac8
Welcome to Gradle 5.3!
Here are the highlights of this release:
- Feature variants AKA "optional dependencies"
- Type-safe accessors in Kotlin precompiled script plugins
- Gradle Module Metadata 1.0
For more details see https://docs.gradle.org/5.3/release-notes.html
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :compileJava
> Task :processResources
> Task :classes
> Task :bootJar
BUILD SUCCESSFUL in 48s
3 actionable tasks: 3 executed
Removing intermediate container 88a5ac812ac8
---> 4f9beba838ed
Step 6/10 : FROM openjdk:11-jre-slim
---> 0e452dba629c
Step 7/10 : EXPOSE 8080
---> Using cache
---> d5519e55d690
Step 8/10 : WORKDIR /usr/src/java-app
---> Using cache
---> 196f1321db2c
Step 9/10 : COPY --from=builder /usr/src/java-code/build/libs/*.jar ./app.jar
---> d101eefa2487
Step 10/10 : ENTRYPOINT ["java", "-jar", "app.jar"]
---> Running in ad02f0497c8f
Removing intermediate container ad02f0497c8f
---> 0c63eeef8c8e
Successfully built 0c63eeef8c8e
Successfully tagged website-server:latest
Mỗi lần nó đóng băng Starting a Gradle Daemon (subsequent builds will be faster)
Tôi đã suy nghĩ về việc thêm âm lượng với các phụ thuộc lớp được lưu trong bộ nhớ cache nhưng tôi không biết đó có phải là cốt lõi của vấn đề không. Ngoài ra tôi không thể tìm thấy ví dụ tốt cho điều đó.
Có cách nào để tăng tốc độ xây dựng?