目录

docker-jar镜像打包

目录

docker jar镜像打包

本文的目的,实现docker打jar包发布镜像到容器中。给出了Dockerfile的例子和发布的脚本。

目录结构

https://i-blog.csdnimg.cn/direct/abb5e9180a45405f8d44f4b6f5acc1a2.png

脚本执行自动打包和发布

run.sh

脚本作用:关闭容器,删除容器,删除原始镜像,打包镜像,发布运行服务

echo 'docker stop store-server  '
docker stop store-server

echo 'docker rm  store-server'
docker rm  store-server


echo 'rmi images ...'
docker rmi  wdfimagetest


echo 'start images ...'
docker build -t wdfimagetest .


echo 'run server :docker run --name store-server  -d -p 80:80  wdfimagetest:latest'
docker run --name store-server  -d -p 8080:80  wdfimagetest:latest

linux系统在增加执行权限 chmod +x run.sh

Dockerfile

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER WDF <123@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# Copy 是复制文件到容器。注意以根目录为默认层级,注意相对路径
COPY store-server-0.2.jar store-server-0.2.jar

# 将jar包添加到容器中并更名为app.jar
ADD store-server-0.2.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
EXPOSE 80
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar", "--server.port=80", "> /log/app.log"]

踩坑:

  1. Dockerfile 的f是小写,如果大写会出错

  2. 设置端口 (-p 7777:8888)    7777是映射到外部的端口,8888是内部的端口,特别容易反了。已经踩过几次坑

详细的命令请参考: