zoukankan      html  css  js  c++  java
  • docker~环境变量到底怎么用

    docker已经用了两年多了,从开始的简单应用到现在的自动化部署,已经越来越感觉到它的威力,今天把Hitchhiker部署完成后,看到了它与.net core项目有个类似的地方,就是对于多环境部署的时候都用到了环境变量,Hitchhiker的docker-compose.yml里有对环境地址的设置(当前这个开源项目还有一些BUG,需要挂载一下/utils/index.js,去修改一下自己的端口,这个项目把它在了appconfig.json里了,默认8080,大叔认识不如直接写到环境变量里,根据具体变量去实现端口的监听不是更好吗);在.net core里同样也是通过环境变量的设置来实现各个配置文件的加载的,这点两者是同时的,这也是一个趋势!

    docker-compose.yml里的环境变量

    services:
      hitchhiker:
        image: lind/ddd
        container_name: lind/ddd:v1.0
        environment:
          - DB_HOST=lind-mysql
          - APP_HOST=http://127.0.0.1
          - APP_Port=8080

    上面代码里,声明了三个环境变量,用户在部署时,根据具体环境去填写信息,如本地测试用的是127.0.0.1和8080,数据库服务器名是lind-mysql,而在stage和prod环境可能有其它的配置,根据具体的情况去配置它,这就是部署文件yml里的环境变量!

    程序中使用环境变量

    这些环境变量在部署时设计后,程序的运行时里,会有具体的体现,你设置什么,它就获取什么,在不同的语言里,使用环境变量的方法也是不同的,看下面的例子:

    1 sh脚本使用它

    echo $DB_HOST

    2 .netcore里比较特殊

    只配置环境变量名称,然后每个环境变量对应一种配置文件,代码里只访问配置文件即可(根据系统当前的环境变量去访问对应的文件)

        environment:
          - ASPNETCORE_ENVIRONMENT=Development
           public Startup(IConfiguration configuration, IHostingEnvironment env)
            {
                ConfigFileHelper.Set(env: env);
                Configuration = configuration;
            }

    .netcore里也环境变量简单化了,只需要设置三个默认的,当然也可以自己扩展,三个默认的分别是Development,Staging和Producting.

    3 nodejs里使用它

    console.log(process.env.APP_HOST)

    通过讲,让我们认识到了环境变量的魅力!

    多环境部署,有它才够灵活!

  • 相关阅读:
    FPN/lua-sdk-for-UPYUN
    结合keepalived实现nginx反向代理群集高可用
    Tengine + Lua + GraphicsMagick 实现图片自动裁剪/缩放
    cloudflare的新waf,用Lua实现的
    tengine+lua实现时时在线图片缩放,剪切。
    构建基于Nginx的文件服务器思路与实现
    Nginx+Lua+Redis整合实现高性能API接口
    使用nginx+lua实现自己的logserver | 星期八的博客 web & game
    让nginx支持文件上传的几种模式
    利用nginx+lua+memcache实现灰度发布
  • 原文地址:https://www.cnblogs.com/lori/p/7798901.html
Copyright © 2011-2022 走看看