把Jar包打包为docker镜像

使用Dockfile来创建镜像

试验的jar包是用httpServer写的一个简单web服务,访问/test就返回helloworld,下面先拉取一个java:8的基础镜像:

docker pull java:8,再用docker images检查一下:

下面是Dockfile的内容:

FROM java:8
MAINTAINER xxx
COPY httpServerDemo.jar /usr/local/httpServerDemo.jar
EXPOSE 8089
ENTRYPOINT ["java", "-jar", "/usr/local/httpServerDemo.jar"]

生成镜像:

把Dockfile和jar包放在同一个目录下,执行:docker build -t httpserver_demo:1.0 -f Dockerfile .,注意Dockerfile后面的点指的是把当前目录作为上下文目录,创建镜像时,会把上下文目录的文件拷贝到镜像中。

启动镜像:

docker run -P httpserver_demo:1.0,-P是把Dockerfile里EXPOSE声明的端口映射到宿主机一个随机的高阶端口
docker run -p 8090:8089 httpserver_demo:1.0,-p就是指定映射关系,可以看出前面是宿主机的端口,后面是镜像的端口
也可以用--name指定启动容器的名称:docker run --name httpserverDemo -p 8091:8089 httpserver_demo:1.0

 
 

Dockerfile内容解释:

 java:8就是刚下载的基础镜像,MAINTAINER是作者,COPY是把本地的jar拷贝到镜像中,EXPOSE声明镜像开放的接口,

ENTRYPOINT 是指定在docker run时的命令参数,类似的还是RUN和CMD命令,区别参考:https://www.cnblogs.com/klvchen/p/9238410.html

结论

可以在启动镜像的时候,用--entrypoint 选项来覆盖Dockfile里ENTRYPOINT 的设置,来增加JaCoco的javaagent参数

posted @ 2021-11-11 14:49  Dkwestworld  阅读(1303)  评论(0编辑  收藏  举报