zoukankan      html  css  js  c++  java
  • 关于docker的配置文件与环境变量的小发现

    ###### 核心内容:使用官方镜像前,一定要拜读它官方自带的description;

    使用官方镜像前,一定要拜读它官方自带的description;作为众人认可的官方镜像,你未来遇到的大部分问题,很大可能都在这里预置了解决方案。仔细看docker自带官方描述,让你对docker的使用更顺利。

    最近初初接触docker,发现有一点在使用时很不方便,就是配置文件的修改。经过一番波折,终于解决了该问题。

    例如emqx的镜像,plugins/emqx_auth_mysql.conf配置文件中的mysql连接信息等配置,是需要根据部署环境不同而变化的,不能写死在镜像中
    解决方案1:通过挂载外部emqx_auth_mysql.conf替换容器内文件,可以解决问题。但总觉得把整个配置文件暴露在外不方便,且让运维人员维护复杂文件中一个值会增加工作难度
    解决方案2:重新打包emqx镜像,增加shell脚本,通过sed命令替换指定变量;启动镜像时通过变量名传递要修改的配置。
    但shell脚本编写sed替换总是遇到各种麻烦时,且菜鸟写的dockerfile文件缺失也很菜,无端引入很多坑。
    同时,通过变量传递的值有时会莫名其妙替换掉一些关键配置。

    后来仔细研究发现docker自身会留出一些变量设置,方便用户通过变量向配置文件中传递值。这就方便快捷的解决了配置文件关键参数修改的问题,同时也解释了为什么一些核心参数值莫名被修改问题,因为你的变量名正好使用了docker预留的变量名。
    -----------------------------------关键内容来了------------------------------------------
    如何了解docker镜像提供了哪些环境变量,看官方,看官方,看官方,重要的事说三遍,不要百度盲目搜搜搜
    https://hub.docker.com/r/emqx/emqx


    继续往下翻


    如何使用变量修改配置文件,详细描述
    强调一点,当然如果你的配置文件太复杂,使用挂载更方便,仍可以继续使用。解决方案千千万,选择最合适的就好。

  • 相关阅读:
    【转】虚函数什么情况下会内联
    构造函数不能为虚函数的原因
    《python编程》第四章——文件和目录工具
    《python编程》第三章笔记——脚本运行上下文
    《python编程》第二章笔记
    《Python编程》第一章笔记
    报错:IndentationError:unindent does not match any outer indentation level
    报错:SyntaxError: Non-ASCII character 'xe7' in file:
    1-2、make_db_file.py
    1-1.initdata.py
  • 原文地址:https://www.cnblogs.com/sylvia-liu/p/14661288.html
Copyright © 2011-2022 走看看