docker jar镜像打包
本文的目的,实现docker打jar包发布镜像到容器中。给出了Dockerfile的例子和发布的脚本。
目录结构
脚本执行自动打包和发布
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是内部的端口,特别容易反了。已经踩过几次坑
详细的命令请参考:Docker学习笔记——小白版_全部 icmp(ipv4) -1 -1-CSDN博客