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 其中 ...
随机推荐
- mysql中distinct
1.Distinct 位置 单独的distinct只能放在开头,否则报错,语法错误,与其他函数使用时候,没有位置限制如下 Select player_id,count(distinct(task_id ...
- EXCEL中如何删除透视表的多余汇总
EXCEL中如何删除透视表的多余汇总 1)如下图,选中字段列,单击鼠标右键,在弹出的菜单中选择[字段设置]选项. 2)弹出[字段设置]对话框. 3)选择“分类汇总和筛选”选项卡,然后勾选“无”选项,单 ...
- Windows 10 上的 Git 如何清除密码? Git Credential Manager for Windows
Windows 10 上的 Git 如何清除密码? 因为一台新的电脑是 Windows 10 在第一次使用 Git 要求输入密码时把密码给输错了. 之前提交都是说 Token 错了,不再出现提示密码. ...
- baby用品
新生嬰兒用品清單 1.哺育用品: 大奶瓶:6支,240ml左右.選擇PC材質耐高溫120度,可消毒:玻璃材質建議選用印刷安全無鉛材料,可消毒. 小奶瓶:2-3支,120ml左右.寬口徑/一般口徑(喝水 ...
- RK3288 红外遥控器增加系统中已有的键值
转载请注明出处:https://www.cnblogs.com/lialong1st/p/10066673.html CPU:RK3288 系统:Android 5.1 1.查看遥控器的用户码和键值, ...
- emacs之配置etags
emacsConfig/etags-setting.el (require 'auto-complete-etags) (setq ac-sources (append '(ac-source-eta ...
- FPGA--数字芯片之母
这个世界先有鸡还是先有蛋?没有人知道答案.但是如果有人问ess9018.ak4497.cs43198这些高端SIGMADELTA架构DAC的妈妈是谁?我们可以回答您:它们都有一个同样的妈,名字叫做FP ...
- httpclient跳过https请求的验证
一.因为在使用https发送请求的时候会涉及,验证方式.但是这种方式在使用的时候很不方便.特别是在请求外部接口的时候,所以这我写了一个跳过验证的方式.(供参考) 二.加入包,这里用的是commons- ...
- MyBatis框架简介
1.下载地址:下载地址:https://github.com/mybatis/mybatis-3/releases 2.MyBatis是什么? MyBatis 本是apache的一个开源项目iBati ...
- Quartz实现JAVA定时任务的动态配置
什么是动态配置定时任务? 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 定时任务实现方式千人千种,不过基础的无外乎 1.JDK 的Timer类 2. ...