将jar包制作成docker镜像

将jar包制作成docker镜像
1、准备可运行jar包
2、建立Dockerfile文件

文件内容:

FROM java:8
VOLUME /tmp
ADD xxx-sendemail-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar

1、FROM

格式:FROM 或 FROM :

定义基础镜像,后面的RUN是在此基础上运行。第一条指令必须为FROM指令,并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)

2、ADD

格式:ADD

定义变量吧。复制指定的到容器的中,可以是Dockerfile所在的目录的一个相对路径;可以是URL,也可以是tar.gz(自动解压)

注意与你的文件名一致

3、RUN

格式:RUN 或 RUN [“”, “”, “”]

每条指令将在当前镜像基础上执行,并提交为新的镜像。(可以用“\”换行)

3、docker制作镜像

在Ubuntu上制作的。准备工作:

Ubuntu docker安装,参照 Ubuntu 与 Windows共享文件
到终端存放jar包和dockfile的文件夹下
sudo docker build -t="***" .
-t 添加tag, . 代表当前目录(注意 “.”的存在)

4、查看生成的image
docker images

docker images|grep xxx

 ==================

run.sh

#!/bin/bash

aa=`docker stop xxx-sendemail`
echo $aa
bb=`docker rm xxx-sendemail`
echo $bb
ca=`docker rmi xxx/sendemail-service`
echo $ca
b=`docker build -t xxx/sendemail-service .`
echo $b
docker run -d --name xxx-sendemail --restart=always xxx/sendemail-service;docker logs -f xxx-sendemail

$ sudo chmod +x run.sh
$ ./run.sh

查看日志(控制台输出)
docker logs -f xxx-sendemail --tail 500

docker logs xxx-sendemail |head -n 200

注:这种jar包需要打包Runnable JAR才行

 

### 将Java应用程序(JAR文件)构建为Docker镜像的最佳实践 #### 准备工作 为了功将Java应用程序打包Docker镜像,需确保已安装并配置好Docker环境。此外,拥有待打包的`.jar`文件也是必不可少的前提条件。 #### 创建Dockerfile 编写一个合适的`Dockerfile`是整个过程中至关重要的一步。对于大多数场景而言,推荐采用多阶段构建的方式,这种方式不仅能够有效减少最终镜像大小,还能提高安全性与性能[^2]。 ```dockerfile # 使用官方OpenJDK作为基础镜像 FROM openjdk:17-jdk-alpine AS build # 设置工作目录 WORKDIR /app # 复制项目依赖至容器内 COPY . . # 编译项目(如果适用) RUN javac -d ./out src/*.java && \ jar cvf app.jar -C out/ . # 开始第二阶段:创建精简版运行时环境 FROM openjdk:17-jre-slim # 设定工作路径 WORKDIR /opt/app # 从build阶段复制编译好的jar到此层 COPY --from=build /app/app.jar /opt/app/ # 定义默认入口点 ENTRYPOINT ["java", "-jar", "/opt/app/app.jar"] ``` 上述示例展示了如何通过两步完从源码到可执行镜像的过程。第一步基于完整的开发工具链来处理项目的编译;而第二步则仅保留必要的运行库和支持文件,从而得到体积更小、加载速度更快的结果。 #### 构建与测试镜像 保存上面定义的内容到名为`Dockerfile`的文本文件之后,在同一目录下打开终端窗口输入如下指令: ```bash $ docker build -t my-java-app . $ docker run --rm my-java-app ``` 这会触发一次完整的构建流程,并立即启动新生的应用实例用于初步验证其功能是否正常。 #### 推送至仓库 当确认本地环境中一切运作良好后,就可以考虑将该自定义镜像推送到公共或私有的注册中心以便后续分发给其他团队员或是生产服务器上部署使用了。 ```bash $ docker tag my-username/my-java-app:v1.0.0 $ docker push your-dockerhub-username/my-java-app:v1.0.0 ``` 以上操作完后即完了全部准备工作,现在可以从任何地方拉取最新版本的镜像并快速部署服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值