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)

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

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:docker~环境变量到底怎么用,如需转载请自行联系原博主。

时间: 2024-09-28 00:21:51

docker~环境变量到底怎么用的相关文章

spring 代码中,解决docker环境变量传递问题

1,docker变量 在docker中定义变量,使用echo $Value 能直接在命令行中显示, 这个使用spring可以直接注入到代码当中. php中有方便的代码直接获得环境变量,但是java用起来就麻烦点. 直接使用spring的value就行了. 2,代码 比如一个spring的用户登录action. 里面用docker配置了一个默认的admin登录名称和密码. 在spring里面可以这样写: import org.springframework.beans.factory.annota

使用junit&spring修改系统的环境变量,解决docker程序测试问题

1,修改系统环境变量 首先环境变量在java运行的时候是修改不了的. 已经设置成只读了虽然方法都能调用. 这个有啥用呢?因为docker开放的应用程序的环境变量都是这样设置的. docker在启动的时候设置了环境变量,然后应用程序就可以直接调用了. 调用的方法java就是通过 System.getenv()获得的. 有spring的程序,直接使用${jdbc.url}写在xml的配置文件就好. spring已经支出从系统环境变量里面获得参数了. System.out.println(System

docker下开发,修改环境变量启动jetty

1,本地测试docker程序 遇到问题:docker程序使用系统的环境变量启动的. 在服务器运行的时候是可以的,但是在本地启动的时候就补行了. 因为本地没有配置环境变量. 一种办法直接设置系统的环境变量,但是切换起来比较麻烦. 于是研究下jetty还是有参数可以进行配置的. http://stackoverflow.com/questions/3231797/specify-system-property-to-maven-project 不影响使用 2,直接在maven里面配置 直接配置就行:

linux下设定环境变量的方法介绍

  那么需要将export命令写入某个系统文件中,拥有这种功能的文件常见的有如下几个: /etc/environment 或 /etc/profile 或 ~/.profile 或 /etc/bash.bashrc 或 ~/.bashrc等. 有这么多可以用,到底它们有什么区别,谁先谁后呢? 首先,来看看这几个文件都是干什么的: 1./etc/environment–>是系统在登录时读取的第一个文件,用于为所有进程设置环境变量.系统使用此文件时并不是执行此文件中的命 令,而是根据KEY=VALU

Docker Machine快速安装Docker环境(二)

什么是Docker Machine? Machine是一个简化安装Docker环境的工具.怎么简化法,例如,在ubuntu安装一个docker环境要按照U这个系统配置教程来装,哪天又换了CentOS系统,又要按照这个系统配置教程装.市场上主流Linux系统版本很多,每次安装岂不有些麻烦.使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统. 另一方面,Machine还具备Docker工具管理什么虚拟化技术,Generic驱动默认管理

ssh连接远程主机执行脚本的环境变量问题

近日在使用ssh命令ssh user@remote ~/myscript.sh登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题: ~/myscript.sh: line n: app: command not found app是一个新安装的程序,安装路径明明已通过/etc/profile配置文件加到环境变量中,但这里为何会找不到?如果直接登陆机器remote并执行~/myscript.sh时,app程序可以找到并顺利执行.但为什么使用了ssh远程执行同样的脚本就出错了呢?两种方式执行

环境变量-救命啊...tomcat装不上...

问题描述 救命啊...tomcat装不上... 我的java已经配置好了,也各种按书上网上配置了tomcat环境变量了,可就是弄不好,不知道为啥,而且如果只是设置好JDK环境变量点startup还能出来东西,就是很多代码,可是打开命令行输入startup以后就是图片内样,http://localhost:8080输入以后也找不见网页:设置了tomcat环境变量反而点不开startup了,一点就闪一下...我就是按照网上来的啊,到底为啥呢?快把我搞疯了...求各位前辈指点! 解决方案 你cmd输入

[Docker系列-1] 搭建docker环境

1.Docker安装 1.1.下载Docker Toolbox 最新的版本使用官方的Docker Toolbox进行安装,Docker Toolbox是用来支持在Mac和Windows平台使用Docker的集成套件:以套件的形式提供,极大地方便了用户获取整套Docker工具: Docker Client Docker Machine Docker Compose (Mac only) Docker Kitematic VirtualBox 正如Docker Compose最终代替了Fig,Doc

u-boot 环境变量参数设置

今天本来是烧写内核,结果一不小心把uboot也整不能用了,无奈之下只好重新烧个uboot,等都弄好以后,发现系统还是启动不了,原来是启动参数设置不对,于是找到了这篇文章,//是我添加的内容.   原文地址:http://blog.chinaunix.net/u3/94312/showart_1923637.html 原文:      看到这个标题,可能觉得这个并没有什么的,其实不然,编好了u-boot了,但是如何来使用确不是那么简单的,想当初我将uboot制作出来后以为全部都搞定了,屁颠屁颠的烧