当我们部署服务时候,希望yaml、properties中的一些配置参数(如数据库、端口号等)从外界获取而非写死。这样做的好处是,当你想部署在别的机器上就不需要再修改或者帮甲方上线的时候只需要修改环境变量就可以了。
Linux下添加环境变量很简单,无非是修改一些文件。
- 修改profile文件,输入vi/etc/profile 再结尾输入想添加的变量,如:export HOST=127.0.0.1
- 修改.bashrc文件,输入vi/root/.bashrc (profile与bashrc具体两者有什么区别可以查看看)
- 修改完后记得 输入source /root/.bashrc 立即生效
由于项目是由docker进行部署的,说说docker中如何添加环境变量
- 在docker中,也能像Linux一样,进入容器中修改文件达到添加环境变量的效果。但是这样做有个弊端:如果项目频繁迭代,每一次部署都时候容器都被重新创建,被重新创建一次就需要再配置一遍,明显非常的费力,个人不推荐这种方法。
- 接下来介绍三种添加docker环境变量的方法:
- 在Dockerfile文件中添加 ENV DB_HOST=127.0.0.1 DB_USER=root DB_PASSWORD=123456
- 在容器启动时添加(即docker run) docker run --name JAVATEST -d -p 8080:8080 --network host --env DB_HOST=127.0.0.1 --env DB_USER=root --env DB_PASSWORD=123456 镜像名
- 写在env.list文件中 docker run --name JAVATEST -d -p 8080:8080 --network host --env-file env.list 镜像名
env.list文件
SERVER_PORT=8080
DB_HOST=127.0.0.1
DB_USER=root
DB_PASSWORD=123456
yaml配置文件
url: jdbc:mysql://${DB_HOST:localhost}:3306/Test?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8
username: ${DB_USER}
password: ${DB_PASSWORD}
${DB_HOST:localhost}表示为去DB_HOST的环境变量值,如果取不到则默认为localhost