【docker】环境变量 和 脚本 作用

本文介绍如何使用Dockerfile中的env指令配置环境变量,并通过示例展示了如何利用环境变量自动选择容器启动模式,包括单机与集群两种模式。此外,还介绍了如何结合shell脚本进一步实现应用启动的自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker的作用是提供应用的隔离环境,方便部署。

dockerfile有env选项,可以让我们在生成的镜像里添加一些环境变量,这些环境变量有什么作用?


可以用来作为标志,代表部署的环境的一些参数。

比如说我们需要一个docker部署一个mysql。那么我们可以添加一个标识来表示这个mysql是以什么方式启动的,比如说可以通过集群方式启动,也可以通过单机方式启动,很显然这两种模式的启动命令是不同的。

那么我们可以使用dockerfile的env来实现这个自动化启动应用的过程。

比如说,我们可以在dockerfile里面提供一个默认的env,值是non-cluster,表示默认启动方式是单机版。

这样,我们在run一个容器的时候,如果不覆盖这个参数,那么环境变量就是non-cluster。相反,我们可以通过run的-e参数或者docker-compose的environment来覆盖这个参数为cluster,这时启动的容器里的环境变量就是cluster了。



这就是环境变量的作用,我们可以在运行一个容器的时候来指定容器的环境变量,以代表不同的启动参数。


但是光有这个环境变量并没有什么卵用,因为它只是一个变量或者标识而已,进一步的我们需要一个shell脚本来读取环境变量,以判断我们的启动方式,从而运行相应的命令。这个脚本可以通过add命令添加到容器内,然后使用cmd或者entrypoint来运行。


所以个人感觉,通过环境变量+启动脚本的方式可以最大限度的实现部署应用的自动化。真正的启动过程命令就在脚本里面,脚本会读到我们设置的环境变量。


一个小例子:

dockerfile:

[html]  view plain  copy
  1. FROM ubuntu:latest    
  2.   
  3. ADD ./run.sh /  
  4. RUN chmod 777 /run.sh  
  5. CMD ["/run.sh"]  


docker-compose:

[html]  view plain  copy
  1. version: '3.2'  
  2. services:  
  3.   app1:  
  4.     image: test-env  
  5.     environment:  
  6.       - E1=10  

run.sh:

[html]  view plain  copy
  1. #!/bin/bash  
  2.   
  3. if [ $E1 -lt 100 ]  
  4. then  
  5.     echo "yes"  
  6. else   
  7.     echo "no"  
  8. fi  

通过传递不同的E1,来判断输出内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值