一、創(chuàng)建 docker 目錄
/usr/local/docker
二、將項目打包上傳到目錄
# Jar 包
/usr/local/docker/app.jar
# 配置文件
/usr/local/docker/config/application.yml
三、在目錄下創(chuàng)建 Dockerfile 文件
FROM openjdk:8-jre
# 將 jar 包添加到容器中 , tar 類型文件會自動解壓(網(wǎng)絡(luò)壓縮資源不會被解壓) , 可以訪問網(wǎng)絡(luò)資源 , 類似 wget
ADD app.jar /usr/local/app.jar
# 功能和 ADD 相同 , 不會自動解壓文件 , 也不能訪問網(wǎng)絡(luò)資源
# COPY ./config/ /usr/local/config
# 配置環(huán)境變量
# ENV JAVA_HOME=/usr/local/java/jdk-8
# ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# ENV PATH=$JAVA_HOME/bin:$PATH
# 切換工作目錄 , 相當于 cd
WORKDIR /usr/local
# 映射端口
EXPOSE 80
# ENTRYPOINT 或 CMD 只會執(zhí)行一次 , 會覆蓋之前的 ENTRYPOINT 或 CMD 命令
ENTRYPOINT ["java" , "-jar" , "app.jar"]
四、構(gòu)建鏡像
docker build -t app:1.0 .
五、創(chuàng)建并啟動容器
docker run --name app -p 80:80 -v ./config/:/usr/local/config -d app:1.0
六、ENTRYPOINT 和 CMD 區(qū)別
需求:想追加一個命令 -l
, 期望執(zhí)行 ls -al
1. CMD
docker run 會覆蓋 CMD 后面的命令
FROM centos
CMD ["ls","-a"]
此時命令在 docker 啟動后自己執(zhí)行, 我們可以在命令行啟動 docker 鏡像時, 執(zhí)行其他命令行參數(shù), 覆蓋默認的 CMD文章來源:http://www.zghlxwxcb.cn/news/detail-722352.html
$ docker run demo -l
此時會報錯 , '-l' 替換了 'ls -a' 命令 , 沒有這個命令導致報錯
2. ENTRYPOINT
docker run 不會覆蓋 entrypoint 后面的命令,需要使用 --entrypoint
命令覆蓋文章來源地址http://www.zghlxwxcb.cn/news/detail-722352.html
$ docker run --entrypoint demo -l
此時會報錯 , '-l' 替換了 'ls -a' 命令 , 沒有這個命令導致報錯
$ docker run demo -l
成功執(zhí)行命令 'ls -al'
到了這里,關(guān)于Docker 構(gòu)建 Jar 鏡像的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!