[Dockerfile] 使用Maven重新打包jar檔

最近在部署專案到 Cloud Run時,遇到一個問題,

當 push commit 到 GitHub 後,原以為 Cloud Run 會自己打包一個新的 jar檔,再放到 docker image,

結果是只會用到原本指定的 jar檔,

代表每次都會用到舊的檔案,除非你有自己再打包一個新的 jar 檔再 push上去,

於是,

我改寫了 dockerfile,

# 使用官方 Maven 映像作為基礎映像
FROM maven:3.8.4-openjdk-17 AS build

# 將工作目錄設置為 /app
WORKDIR /app

# 複製整個專案到容器中
COPY . .

# 使用 Maven 重新打包應用程序
RUN mvn clean package -DskipTests

# 使用 Java 17 版本
FROM openjdk:17-oracle

# 將打包後的 Spring Boot 應用程序 JAR 文件複製到 /app 目錄
COPY --from=build /app/target/yourApplication.jar .

# 定義容器啟動時運行的命令
CMD ["java", "-jar", "yourApplication.jar"] > /dev/stdout

當每次 push 到 GitHub後,

Cloud Run 會依照 Dockerfile 的指令,

使用 Maven 重新打包一個新的 jar檔,這樣就不用每次都要手動打包 jar 檔再 push 上來啦!

Table of Contents

參考資料

  1. ChatGPT

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *