【docker】环境变量 和 脚本 作用
2018-02-24 09:48
253 查看
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 copyFROM ubuntu:latest
ADD ./run.sh /
RUN chmod 777 /run.sh
CMD ["/run.sh"]
docker-compose:[html] view plain copyversion: '3.2'
services:
app1:
image: test-env
environment:
- E1=10
run.sh:[html] view plain copy#!/bin/bash
if [ $E1 -lt 100 ]
then
echo "yes"
else
echo "no"
fi
通过传递不同的E1,来判断输出内容。
可以用来作为标志,代表部署的环境的一些参数。比如说我们需要一个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 copyFROM ubuntu:latest
ADD ./run.sh /
RUN chmod 777 /run.sh
CMD ["/run.sh"]
docker-compose:[html] view plain copyversion: '3.2'
services:
app1:
image: test-env
environment:
- E1=10
run.sh:[html] view plain copy#!/bin/bash
if [ $E1 -lt 100 ]
then
echo "yes"
else
echo "no"
fi
通过传递不同的E1,来判断输出内容。
相关文章推荐
- 【docker】环境变量 和 脚本 作用
- Linux 脚本中环境变量PATH的作用
- linux环境下不同脚本文件配置的环境变量作用域范围的区别
- 详细说明JDK环境变量中dt.jar、tools.jar等变量值的作用(结合ClassLoader)
- Visual Studio 2008 环境变量、工作目录、vc++目录、 命令等 的配置和作用
- Java复习笔记(二)——环境变量Path和CLASSPATH的作用
- 详细说明JDK环境变量中dt.jar、tools.jar等变量值的作用(结合ClassLoader)
- 系统的环境变量path的作用是什么
- shell脚本中使用自定义命令之一---使用环境变量的方式
- python脚本中如何设置系统的环境变量
- windows上自动设置java环境变量的脚本
- 转载:classpath、path、JAVA_HOME的作用及JAVA环境变量配置
- 编写.bat脚本设置JAVA环境变量
- CRONTAB调用备份脚本时要注意环境变量的设置
- Java环境变量的作用以及如何配置环境变量
- classpath、path、JAVA_HOME的作用及JAVA环境变量配置
- JAVA环境变量的作用
- 设置系统环境变量立即生效的VBS脚本
- linux脚本编写基础(环境变量、shell流程控制)
- JAVA环境变量作用