所以我制作了一個我應該放入并從docker容器運行的spring boot應用程式,我想使用docker檔案構建整個影像。
我正在使用這個 dockerFile:
FROM openjdk:8-jdk-alpine
ADD . /analytics-service
WORKDIR /analytics-service
ENTRYPOINT ./mvnw spring-boot:run
當我創建影像時,它只是復制檔案,并且只有在我運行它之后,它才會開始下載所有 maven 依賴項。考慮到我將運行幾個容器,這需要一段時間。那我該怎么做呢?我希望它在創建映像時獲取所有依賴項,因此當我創建容器時它不會開始下載。
uj5u.com熱心網友回復:
如果我理解正確,您希望先下載 Maven 依賴項,然后將它們與您的應用程式組合成一個影像?
如果這是您想要的,那么正確的方法如下:
- 拉出一個 maven 影像(通常您將此階段稱為“構建器”-它只是一個名稱)
- 將 pom.xml 檔案復制到作業目錄中
- 運行 maven 一次以獲取您的依賴項,然后再次將其打包
- 從 openjdk 創建一個新的鏡像庫
- 將第 3 步的結果復制到您的應用映像中
- 暴露一個埠
- 提供入口點
這是 Dockerfile 中的樣子:
FROM maven AS builder
WORKDIR /usr/src/analytics
COPY pom.xml .
RUN mvn -B dependency:go-offline
COPY . .
RUN mvn package
FROM openjdk:8-jdk-alpine
WORKDIR /analytics-service
COPY --from=builder /usr/src/analytics/target/YOUR_JAR_FILENAME.jar .
EXPOSE 80
ENTRYPOINT ["java", "-jar", "/analytics-service/YOUR_JAR_FILENAME.jar"]
在運行它之前,您需要知道您的 jar 檔案是如何命名的。您可以在計算機上的 Docker 之外運行 mvn package 并查看生成的檔案名。將其復制到 Dockerfile 中的上述兩個位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471011.html
下一篇:如何解決百里香模板決議錯誤
