今天在部署java工程時遇到的需求窿春,本意想通過Dockerfile實現(xiàn)編譯、打包采盒、運行一體化的方案旧乞,結果百度了半天都沒找到想要的解決方案,都是本地編譯打包磅氨,然后COPY到基礎鏡像里面尺栖。后來在google上面找到了一個方案,原文戳這里:https://dzone.com/articles/build-package-and-run-spring-boot-apps-with-docker
0x01: 找到待部署的項目烦租,在pom.xml同級目錄下添加Dockerfile:
添加Dockerfile文件.png
文件內(nèi)容:
# VERSION 1.0.0
# Author: robin
# 打包jar采用maven鏡像
FROM maven:3.5.2-jdk-8-alpine AS MAVEN_BUILD
MAINTAINER robin <webxiaohua@gmail.com>
# 工作目錄在鏡像的 /build 目錄下
WORKDIR /build/
# 把本地的 pom.xml 和 src目錄 復制到鏡像的/build目錄下
COPY pom.xml /build/
COPY src /build/src/
# 執(zhí)行maven打包
RUN mvn package
# 運行jar采用jdk基礎鏡像
FROM openjdk:8-jdk-alpine
# 設置工作目錄在鏡像的 /app 目錄下
WORKDIR /app
# 將jar包添加到容器中并更名為app.jar
COPY --from=MAVEN_BUILD /build/target/********-1.0-SNAPSHOT.jar /app/
# 運行jar包
ENTRYPOINT ["java","-jar","********-1.0-SNAPSHOT.jar"]
0x02 制作docker鏡像
執(zhí)行如下命令
docker build -t **********:1.0 .
由于maven:3.5.2-jdk-8-alpine鏡像的倉庫地址是用的官方倉庫地址延赌,在國內(nèi)訪問的話會很慢,我看了它的鏡像的環(huán)境變量左权,它支持配置maven config皮胡,講道理可以通過volume方式把我們的配置加載進去,不過我這里沒嘗試赏迟。
maven image.png
經(jīng)過漫長的下載等待,終于制作好我們的鏡像了蠢棱。運行測試下來锌杀,完美!以后就可以輕松制作docker鏡像啦~