Tạo Dockerfile và generate docker image
Tạo task
- Trước tiên bạn cần phải tạo task trên file build.grade bằng cách copy đoạn code sau
tasks.register("unpack", Copy) {
dependsOn bootJar
from(zipTree(tasks.bootJar.outputs.files.singleFile))
into("build/libs")
}
Đoạn mã này là một đoạn mã sử dụng Gradle để định nghĩa một task mới có tên là “unpack”. Hành động của task này là sao chép (copy) các file từ một tệp nén (ZIP) của task “bootJar” và giải nén chúng vào thư mục “build/libs”.

Tạo file .dockerignore
- Tạo file .dockerignore để chỉ định những file và thư mục mà Docker sẽ bỏ qua (ignore) khi bạn đóng gói (build) một image Docker từ các thành phần của project.

- Copy đoạn code bên dưới
.git
.gitignore
.dockerignore
.gradle
.idea
Dockerfile
README.md

Tạo file Dockerfile
- Tạo file Dockerfile và copy đoạn code bên dưới
FROM eclipse-temurin:21-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=build/libs
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
EXPOSE 8081
ENTRYPOINT ["java", "-cp", "app:app/lib/*", "com.firstcloudjourney.productsservice.ProductsserviceApplication"]

Generate docker image
- Tiếp theo chúng ta sẽ cấu hình trên intelliJ để generate Docker image
- Nhấn vào biểu tượng Run, chọn new run configuration

- Một popup hiện lên chúng ta sẽ cấu hình như sau
- Với Image Tag, nhập
productsservice:1.0.0
- Nhấn Modify Opition chọn Build options
- Khi Build options hiên ra, nhập
--platform linux/amd64

- Tiếp theo chúng ta cần cấu hình before launch
- Nhấn vào icon + và chọn run gradle task
- Sau đó 1 pop up hiên lên như bên dưới

- Trong pop up select gradle task
- Với Gradle project chọn productsservice
- Với Task chọn unpack task chúng ta đã thêm trước đó
- Chọn Ok

- Sau khi trở lại pop up edit configuration nhấn apply

build ứng dụng sử dụng bootjar
- Tiếp theo chúng ta sẽ build ứng dụng bằng cách sử dụng bootjar từ gradle
- Chọn biểu tượng gradle
- Chọn task theo sau đó là build và nhấn bootjar để build ứng dụng

- Kiểm tra file ứng dụng chúng ta đã buid theo đường dẫn build/libs

Gennerate docker image
- Bây giờ chúng ta sẽ tạo Docker image từ ứng dụng chúng ta đã build
- Nhấn vào biểu tượng Run ở DockerFile và chọn Build image for ‘DockerFile’
Hãy đảm bảo bạn đã mở docker desktop để có thể build image thành công

- Sau khi tạo image thành công chúng ta có thể thấy productsservice:1.0.0 đã được tạo ra
