yml 文件中使用环境变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yml 文件中使用环境变量相关的知识,希望对你有一定的参考价值。
参考技术A Spring Boot 中可以用 spring.profiles.active 参数来指定系统环境,让系统加载不同的配置文件。可以在程序启动的时候加上参数来指定需要的配置
当然我们也可以事先设置好系统的环境变量
然后在 yml 文件中用 active: $SERVER_EVN 来动态的获取系统已设置好的数据。这样这台 test 服务器中的再启动 Spring Boot 项目的时候就可以不用每次都去设置参数了。
同时 yml 也支持 $SERVER_EVN:dev 这样的方式来设置默认值,此时如果环境变量中没有 SERVER_EVN , active就会默认设置为"dev"。
如何从.env文件获取环境变量到docker-compose.yml?
我有一个.env
文件和一个docker-compose文件。我使用docker-compose上的env_file
属性引用env文件。然后我使用变量插值来设置另一个环境变量,使用.env文件中定义的变量。出于某种原因,Docker无法识别.env文件中定义的变量。
app.env:
MYSQL_DATABASE=wordpress
DB_USER=root
MYSQL_ROOT_PASSWORD=example
码头工人,compose.yml:
version: '3.1'
services:
wordpress:
container_name: 'wp'
build: .
restart: unless-stopped
links:
- mysql
env_file:
- app.env
environment:
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
- WORDPRESS_DB_NAME=${MYSQL_DATABASE}
ports:
- 80:80
答案
看来你混淆了env_file配置选项的含义。它将多个环境变量从外部文件传递到服务的容器。它与environment
相同,但它们是从文件中加载的。
如果你想docker compose
识别.env
文件中定义的变量,它应该是.env文件。
为了达到您的需求,您需要:
1.将app.env
重命名为.env
:
mv app.env .env
2.从env_file
删除docker-compose.yaml
配置选项:
version: '3.1'
services:
wordpress:
container_name: 'wp'
build: .
restart: unless-stopped
links:
- mysql
environment:
- WORDPRESS_DB_USER=${DB_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
- WORDPRESS_DB_NAME=${MYSQL_DATABASE}
ports:
- 80:80
以上是关于yml 文件中使用环境变量的主要内容,如果未能解决你的问题,请参考以下文章