当前位置:   article > 正文

Docker 构建 Jar 镜像_docker制作jar包镜像

docker制作jar包镜像

一、创建 docker 目录

/usr/local/docker
  • 1

二、将项目打包上传到目录

# Jar 包
/usr/local/docker/app.jar

# 配置文件
/usr/local/docker/config/application.yml
  • 1
  • 2
  • 3
  • 4
  • 5

三、在目录下创建 Dockerfile 文件

FROM openjdk:8-jre

# 将 jar 包添加到容器中 , tar 类型文件会自动解压(网络压缩资源不会被解压) , 可以访问网络资源 , 类似 wget
ADD app.jar /usr/local/app.jar

# 功能和 ADD 相同 , 不会自动解压文件 , 也不能访问网络资源
# COPY ./config/ /usr/local/config

# 配置环境变量
# 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 只会执行一次 , 会覆盖之前的 ENTRYPOINT 或 CMD 命令
ENTRYPOINT ["java" , "-jar" , "app.jar"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

四、构建镜像

docker build -t app:1.0 .
  • 1

五、创建并启动容器

docker run --name app -p 80:80 -v ./config/:/usr/local/config -d app:1.0
  • 1

六、ENTRYPOINT 和 CMD 区别

需求:想追加一个命令 -l , 期望执行 ls -al

1. CMD

docker run 会覆盖 CMD 后面的命令

FROM centos
CMD ["ls","-a"]
  • 1
  • 2

此时命令在 docker 启动后自己执行, 我们可以在命令行启动 docker 镜像时, 执行其他命令行参数, 覆盖默认的 CMD

$ docker run demo -l
此时会报错 , '-l' 替换了 'ls -a' 命令 , 没有这个命令导致报错
  • 1
  • 2

2. ENTRYPOINT

docker run 不会覆盖 entrypoint 后面的命令,需要使用 --entrypoint 命令覆盖

$ docker run --entrypoint demo -l
此时会报错 , '-l' 替换了 'ls -a' 命令 , 没有这个命令导致报错

$ docker run demo -l
成功执行命令 'ls -al' 
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/425586
推荐阅读
相关标签
  

闽ICP备14008679号