zoukankan      html  css  js  c++  java
  • 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&amp&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
  • 相关阅读:
    excel
    AWS学习之EC2
    约瑟夫问题
    centos7 系統vps安裝mysql5.6及設置本地遠程連接筆記
    搜索框的测试checklist
    产品把整个项目组拉走去创业,这是什么神操作
    python基础-python函数参数为print语句时的输出
    python基础学习笔记-切片难点
    session 、cookie、token的区别(转)
    robot framework python3环境下学习笔记(1)——安装robot framework
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6405902.html
Copyright © 2011-2022 走看看