【實(shí)戰(zhàn)篇】基于Dockerfile編譯、打包、運(yùn)行java工程

今天在部署java工程時(shí)遇到的需求,本意想通過(guò)Dockerfile實(shí)現(xiàn)編譯、打包、運(yùn)行一體化的方案,結(jié)果百度了半天都沒(méi)找到想要的解決方案,都是本地編譯打包,然后COPY到基礎(chǔ)鏡像里面。后來(lái)在google上面找到了一個(gè)方案,原文戳這里:https://dzone.com/articles/build-package-and-run-spring-boot-apps-with-docker

0x01: 找到待部署的項(xiàng)目,在pom.xml同級(jí)目錄下添加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目錄 復(fù)制到鏡像的/build目錄下
COPY pom.xml /build/
COPY src /build/src/
# 執(zhí)行maven打包
RUN mvn package
# 運(yùn)行jar采用jdk基礎(chǔ)鏡像
FROM openjdk:8-jdk-alpine
# 設(shè)置工作目錄在鏡像的 /app 目錄下
WORKDIR /app
# 將jar包添加到容器中并更名為app.jar
COPY --from=MAVEN_BUILD /build/target/********-1.0-SNAPSHOT.jar /app/
# 運(yùn)行jar包
ENTRYPOINT ["java","-jar","********-1.0-SNAPSHOT.jar"]
0x02 制作docker鏡像

執(zhí)行如下命令

docker build -t **********:1.0 .

由于maven:3.5.2-jdk-8-alpine鏡像的倉(cāng)庫(kù)地址是用的官方倉(cāng)庫(kù)地址,在國(guó)內(nèi)訪問(wèn)的話會(huì)很慢,我看了它的鏡像的環(huán)境變量,它支持配置maven config,講道理可以通過(guò)volume方式把我們的配置加載進(jìn)去,不過(guò)我這里沒(méi)嘗試。


maven image.png

經(jīng)過(guò)漫長(zhǎng)的下載等待,終于制作好我們的鏡像了。運(yùn)行測(cè)試下來(lái),完美!以后就可以輕松制作docker鏡像啦~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容