使用Dockerfile部署docker生成容器-模板

# 这是docker运行jar包的模板 运行此Dockerfile文件时建议 把此Dockerfile文件+xx.jar单独放到一个文件夹,然后执行 `docker build -t hellowold-jar-images:v1.0 .`
FROM java:8

# 作者
MAINTAINER ssx <ssx17852015601@163.com>

#因为容器运行后可能一直产生日志文件,导致容器数据变大,合理利用挂载点
# 容器挂载的意思就是容器内部的某个目录映射到宿主机某个目录,操作容器内部的这个目录相当于操作宿主机的某个目录(例如容器内部创建了一个文件,那么意味着你在宿主机目录也创建了一个文件)
# VOLUME 声明容器内挂载点“/home/shenshuxin/apps/spring-app”挂载到宿主机的某个目录,注意宿主机的“某个目录”是由docker自己生成的,
#    VOLUME作用就是当你docker run命令的时候如果没有指定-v参数,也会有一个挂载
#
# Dockerfile文件的VOLUME 和 docker run命令的-v之间的关系:(以本模板为例)
#    1. 如果docker run命令没有指定-v 最终容器运行后只会有一个挂载(容器内部/home/shenshuxin/apps/spring-app 与宿主机/xx/xx)
#       注意此“宿主机/xx/xx”是由docker自己生成的,可以通过docker inspect 容器ID 查看"Mounts"中的信息
#    2. 如果docker run命令指定了-v参数(例 docker run -v /log:/app/log ),最终容器运行会有两个挂载点
#           * 容器内部/home/shenshuxin/apps/spring-app 和 宿主机/xx/xx  这是Dockerfile文件的VOLUME指定的
#           * 容器内部/app/log 和 宿主机/log  这是docker run -v命令指定的
#       注意如果是docker run -v /hello:/home/shenshuxin/apps/spring-app的话,那么最终只有一个挂载点,Dockerfile文件的VOLUME挂载被覆盖了
#
# 最后说一下挂载的目的:在容器内部运行jar包,其产生的日志文件是我需要关心的,例如在容器内部执行java -jar xx.jar --log.dir=/spring/log 这里自定义配置日志文件路径
#   然后我想要查看/spring/log中的日志,我需要执行"docker exec --it 容器ID /bin/bash"先进入容器,然后找到/spring/log中的日志。
#   上面的方式显然费劲,我们可以通过挂载点来简单实现:
#                                           在Dockerfile文件的VOLUME指定: VOLUME /spring/log
#                                           接下来运行容器docker run -v /data/log:/spring/log
#                                           最终查看日志只需要在宿主机的/data/log中查看即可
VOLUME /home/shenshuxin/apps/spring-app

# 宿主机中的文件复制到容器中,宿主机文件 容器内部路径。若容器内部路径不存在则自动创建 注意add或者copy命令会自动给你改名字,例如宿主机文件夹是/a/b,执行的ADD /a /c这个命令的话最终容器内的路径是/c/b
COPY springboot-mysql-curd-0.0.1-SNAPSHOT.jar /myappjar/

#声明容器内部开放端口
EXPOSE 8080

#指定容器内部的命令运行在哪个目录,注意此目录是容器内部目录。例如指定/hello那么容器内部执行命令默认都会在/hello下执行
WORKDIR /hello

# RUN只在docker build生效,在容器中运行命令
RUN echo '192.168.0.101 node101' >> /etc/hosts 发现容器启动后并没有把此数据添加成功,如果是要配置容器的host,建议使用启动时添加参数(host:ip)`docker run node101:192.168.0.101`

# CMD命令只在docker run生效,配合ENTRYPOINT使用
# 该命令格式是执行文件路径、参数
CMD ["/myappjar/springboot-mysql-curd-0.0.1-SNAPSHOT.jar","--spring.application.logdir=/home/shenshuxin/entrypointlog"]

# 运行容器后最先执行的命令 配合CMD后最终的命令: java -jar /myappjar/springboot-mysql-curd-0.0.1-SNAPSHOT.jar --spring.application.logdir=/home/shenshuxin/entrypointlog
ENTRYPOINT ["java","-jar"]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值