[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 上來啦!
參考資料
- ChatGPT