dockerfile的应用

5 篇文章 0 订阅
2 篇文章 0 订阅

什么是Dockerfile?

Dockerfile本质上其实是包含各种指令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成镜像。docker build命令用于从Dockerfile构建映像。

Dockerfile的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

Dockerfile文件说明

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。

组成部分

部分命令
基础镜像信息FROM
维护者信息MAINTAINER
镜像操作指令RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令CMD、ENTRYPOINT

在这里插入图片描述

Dockerfile命令

1、FROM

FROM:基础镜像,当前新镜像是基于哪个镜像的

实例:
FROM java:8

2、MAINTAINER

MAINTAINER:镜像维护者的姓名和邮箱地址

实例:
MAINTAINER HongHuaYu 101111@qq.com

3、RUN

RUN:容器构建时需要运行的命令

实例:
RUN echo 'hello docker!' \
    > /usr/local/file.txt

4、EXPOSE

EXPOSE:当前容器对外暴露的端口号

实例:
EXPOSE 8080

5、WORKDIR

WORDIR:指定在容器创建后,终端默认登录进来工作目录,一个落脚点

实例:
WORKDIR /usr/local

6、ENV

ENV
ENV:用来在构建镜像过程中设置环境变量。
举例:ENV MY_PATH /usr/mytest
ENV这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前指定了环境变量前缀一样;也可以在其他指令中直接使用这些环境变量,比如WORKDIR
$MY_PATH

7、ADD

ADD:将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包 ADD

实例:
ADD eladmin.jar eladmin.jar

8、COPY

COPY:类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,不会自动处理URL和解压tar压缩包。COPY将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置。
它的使用方法有两种:COPY src test和COPY [“src”,“dest”]

COPY

实例:
COPY application.yml /etc/springboot/hello-service/src/resources

9、VOLUME

VOLUME:容器数据卷,用于数据保存和持久化工作

实例:
VOLUME /data/db /data/configdb

10、CMD

CMD:指定一个容器启动时要运行的命令。dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker
run之后的参数替换。
CMD指令的格式和RUN类似,也是两种格式:
a) shell格式:CMD <命令>
b) exec格式:CMD [‘可执行文件’,‘参数1’,‘参数2’…]
c) 参数列表格式:CMD [‘参数1’,‘参数2’…],在指定了ENTRYPOINT指令后,用CMD指定具体的参数。

实例:
CMD ["/bin/bash"]

11、ENTRYPOINT

ENTRYPOINT:指定一个容器启动时要运行的命令。ENTRYPOIT的目的和CMD一样,都是在指定容器启动程序及参数。
区别:CMD和ENTRYPOINT都是指定一个容器启动时要运行的命令,但是 如果dockerfile中可以有多个CMD指令,只有最后一个生效 ,CMD会被docker run之后的参数替换
;而有多个ENTRYPOINT指令,每个指令都生效,这就是CMD和ENTRYPOINT的区别。

Dockerfile部署springboot项目

# 基础镜像
FROM java:8
# 作者
MAINTAINER honghuayu 111@11.com
#工作目录
WORKDIR /data/dockerfile/
# 把可执行jar包复制到基础镜像的根目录下
ADD dome1.jar dome1.jar
# 镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效
EXPOSE 8099 8098
# 在镜像运行为容器后执行的命令
ENTRYPOINT ["java","-jar"]
#可变的参数
CMD ["dome1.jar"]

执行Dockerfile命令

**docker build -t dome8 -f ./Dockerfile .**

执行后的效果

在这里插入图片描述

运行打好的包jdk8

在这里插入图片描述

查看web页面的结果

在这里插入图片描述

查看打包的镜像

在这里插入图片描述

运行打包的包jdk11

在这里插入图片描述

运行打包的包jdk17

在这里插入图片描述
最终这个springboot项目可以部署到不同的jdk版本上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值