Dockerfile 指令(-)

Dockerfile文件详解 - 百衲本 - 博客园 

1.cmd和entrypoint

cmd和entrypoint都是只在容器启动时才执行的指令。

   1.1 cmd

  •   一个 Dockerfile 只有一个 CMD 指令,若有多个,只有最后一个 CMD 指令生效.
  •  cmd 指令就是用于指定默认的容器主进程的启动命令的,不可以追加命令(docker run 时)。

  1.2  entrypoint

  •    指定这个容器启动的时候要运行的命令,可以追加命令(docker run --entrypoint "xxx" 方式覆盖)
  • entrypoint 的格式和 run 指令格式一样,分为 exec 格式和 shell 格式。
  • entrypoint 的目的和 cmd 一样,都是在指定容器启动程序及参数。entrypoint 在运行时也可以替代。
  • 当指定了 entrypoint 后,cmd 的含义就发生了改变,不再是直接的运行其命令,而是将 cmd 的内容作为参数传给 entrypoint 指令。

 2.设置变量

        dockerfile有两种方式设置变量一种时编译时设置(arg),一种是运行时env。

2.1 ARG变量(编译时)

ARG主要在编译容器时,比如在dockerfile设置一个变量

from java_ubuntu
arg bootappname
copy ${bootappname} ${bootappname}

在build的时候通过docker build --build-arg bootappname=xxx 

2.2 ENV变量(运行时)

1.在dockerfile中使用ENV配置

env spring_profiles_active=docker

2. 启动设置docker run --env

使用--env-e是一样效果的

#dockerfile中
expose 8080
cmd java -jar ${bootappname}

#启动容器时
docker run --name=producter-one  -e bootappname=producter-one.jar


3.启动时加载文件docker run --env-file

#env.list内容
VAR1=www VAR2=pkslow.com 
VAR3=www.pkslow.com

#启动容器
docker run -itd --name=centos --env-file env.list

完整的dockerfile :

# from openjdk   拉取一个jdk为1.8的docker image
from openjdk:20-jdk-buster
# maintainer设置维护这信息 
maintainer ll
# 设置apt-get源
run sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list

# 执行软件包更新源操作
run apt-get -o Acquire::Check-Valid-Until=false update

#  这里只是打印一下根目录
run pwd
#   设置时区
run ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
run echo 'Asia/Shanghai' >/etc/timezone
#   创建一个目录作为工作目录
run mkdir SpringBootWeb
#   设置工作目录,类似cd
workdir SpringBootWeb
#   拷贝yml文件到工作目录中
copy application-dev.yml application-dev.yml
#  拷贝yml文件到工作目录中
copy SpringBootWeb-1.0.jar springbootweb.jar
#  设置对外端口为 8080
expose 8080
#  执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就执行此行)
cmd java -jar springbootweb.jar --spring.profiles.active=dev

使用docker build构建镜像:

docker build -t my-springboot ./     #my-springboot 镜像名称
或者
docker build -t springbootweb-dev:1.0 ./ -f Dockerfile-dev    #指定Dockerfile文件和tag(如果没有1.0就是latest版)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值