docker 初始化执行.sh修改.properties文件
1、testmysql.properties
rootuser=aa
rootpass=bb
2、用环境变量修改testmysql.properties里面的rootuser和rootpass的值的脚本testmysql.sh
#!/bin/sh
sed -i "s#^rootuser=.*#rootuser=${ROOT_USER}#g" /root/hzbdir/testmysql.properties
sed -i "s#^rootpass=.*#rootpass=${ROOT_PASS}#g" /root/hzbdir/testmysql.properties
exec "$@"
以上这种方式修改.properties文件,如果环境变量的值有特殊符号,比如:
MYSQL_CONNECTION_URL="jdbc:mysql://10.111.131.54:3306/mir-pack?useUnicode=yes&&characterEncoding=utf8&autoReconnect=true"
因为路径当中含有/所以替换语句当中不能用/作为分割符:
错误:sed -i "s/^rootuser=.*/rootuser=${ROOT_USER}/g" /root/hzbdir/testmysql.properties
正确:sed -i "s#^rootuser=.*#rootuser=${ROOT_USER}#g" /root/hzbdir/testmysql.properties
3、用Dockerfile构建容器
FROM 172.16.101.192/common/centos:6
MAINTAINER huzhengbo
ENV MYDIR /root/hzbdir
RUN mkdir $MYDIR
ADD testmysql.sh $MYDIR
ADD testmysql.properties $MYDIR
ENV ROOT_USER cc
ENV ROOT_PASS dd
#下面这一句必须加,要不然,容器初始化执行失败,docker run的时候会出错
RUN chmod 777 /root/hzbdir/testmysql.sh
#容器起来的时候会调用下面这个脚本
ENTRYPOINT ["/root/hzbdir/testmysql.sh"]
CMD ["/bin/bash"]
4、built 和run容器
将Dockerfile、testmysql.properties、testmysql.sh放在同一个目录下,进入该目录:
docker build -t centoshzb .
docker run -dit -e ROOT_PASS=hzbmir --name=centoshzb --net=host fd4fe4846b22
build了一个名叫centoshzb 的镜像,ID为fd4fe4846b22,-e ROOT_PASS=hzbmir就是运行起来的时候给容器里面的环境变量ROOT_PASS传了一个新的值hzbmir,如果不传,则还是原来的值chinacloudmir。
该容器运行后会调用容器里面的/root/hzbdir/testmysql.sh,主要作用就是用环境变量ROOT_PASS的值来修改testmysql.properties里面的rootpass的值。
当环境变量很多的时候,用-e来传值非常不方便,这时候可以用 --env-file来传入一个环境变量文件,比如有一个环境变量文件envfile内容如下:
ROOT_PASS=huacloudhuacloud
ROOT_USER=hzb
运行容器:
docker run -dit --env-file=/root/mirfile/centosTestDockerfile/envfile --name=centoshzb --net=host fd4fe4846b22
docker 初始化执行.sh修改.properties文件的更多相关文章
- Mac下通过shell脚本修改properties文件
通过shell脚本替换属性文件中的某行记录 假设有如下属性文件 demo.properties user.name=test user.password=123456 ................ ...
- Java读取修改Properties文件
properties文件是我们经常需要操作一种文件,它使用一种键值对的形式来保存属性集. 无论在学习上还是工作上经常需要读取,修改,删除properties文件里面的属性. 本文通过操作一个prope ...
- maven 根据P参数值打包动态修改properties文件中值或一定properties
需求:由于最近开发clover项目 ,没有使用spring,更没有使用任何框架,而使用J2EE的web工程,所以连接ZK和MongoDB.Redis等服务器需用指定properties文件, 而目前公 ...
- 格式化MyEclipse代码(java、jsp、js)行的长度@修改java代码字体@修改Properties文件编码方式
每次用MyEclipse/Eclipse自带的快捷键Ctrl+shift+f格式化代码时,如果原来的一行代码大于80列,Eclipse就会自动换为多行.如果想格式化代码后不想让代码换行可以通过以下方式 ...
- 修改properties文件后系统运行异常
今天修改了项目的properties配置文件以后,运行会报异常,即使将内容改回,异常仍然存在.中间还会出现项目报错等问题,现将解决方法整理出来. 1.修改properties的打开方式,将打开方式从p ...
- shell 用环境变量的值修改properties文件
假设有如下属性文件 demo.properties user.name=test user.password=123456 ............................... 需求:先需要 ...
- Springboot中修改.properties文件为.yml文件时项目不能运行问题
可能很多小伙伴会考虑环境配置的问题,maven版本.idea版本什么的,其实没有必要 只要你之前.ies时能运行,那么环境配置就没有问题 不能运行的原因,一定是你的.yml文件的格式问题 .yml文件 ...
- java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载
实现时主要使用Commons-Configuration.jar包,还需要commons-lang,disgestor,beanutils,collections等, package propFile ...
- 在Spring环境下存取properties文件…
Spring中PropertyPlaceholderConfigurer的使用 (1) 基本的使用方法是 classpath:/spring/include/dbQuery.properties 其中 ...
随机推荐
- UNIX 时间戳 C#
/// 将Unix时间戳转换为DateTime类型时间 /// </summary> /// <param name="d">double 型数字</ ...
- CollabNet Subversion Edge 安装笔记(1):基本安装设定篇
转载于:http://blog.miniasp.com/post/2011/12/30/CollabNet-Subversion-Edge-Installation-Notes-Part-1-Basi ...
- String的不变性到final在java中用法
final在Java语言里面啥意思 final修饰一个类,那么这个类就是不可继承.string就是一个非常有名的被final修饰的类,不过他的更加有名的是“不可被修改”. 究竟什么是不可改变?stri ...
- python的面向对象
1.self 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值.这个特别的变量指对象本身,按照惯例它的 ...
- GNU Radio: Synchronization and MIMO Capability with USRP Devices
Application Note Synchronization and MIMO Capability with USRP Devices Ettus Research Introduction S ...
- netty基本组件介绍
Netty做为一款用于搭建高性能网络应用程序的高级框架,由以下几个主要构件组成: 一.Channel Channel 是java NIO的一个基本构造,可以把channel看作是传入或者传出的数据载体 ...
- c# .net 编程方式修改环境变量无效的解决办法
无论是修改注册表方式(System\ControlSet001\Control\Session Manager\Environment"),还是用Environment.SetEnviron ...
- php实现静态化
PHP站点开发过程中,因为搜索引擎对PHP页面搜鹿和html页面的收录有一定的区别,为了站点的推广或者SEO的须要,要对站点进行一定的静态化.静态化并非页面中没有动画等元素,而是指网页的html代码都 ...
- 保持一个会话 添加 HTTP Cookie管理器
在线程组中添加 http cookie manager即可 场景:登录后点击刷新简历
- C++ 函数特性_函数重载
函数重载 在相同作用域内 用同一函数名定义的多个函数: 参数个数和参数类型不同 int getMax(int x,int y,int z) // 函数名相同都是 getMax() { // to do ...