yml文件中引用系统环境变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yml文件中引用系统环境变量相关的知识,希望对你有一定的参考价值。

参考技术A yml中引用系统环境变量很简单

1.设置环境变量:

vim /etc/profile  打开配置文件,在末尾添加:

export mongodb_url='mongodb://127.0.0.1:27017/transformers'

source /etc/profile

2.修改application.yml文件:

3.打包:本地没有环境变量,打包时可跳过测试

mvn clean package -Dmaven.test.skip=true

如何从.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文件中引用系统环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Serverless.yml:在另一个中引用现有的环境变量

在serverless.yml中设置外部文件的环境变量

yml 文件中使用环境变量

如何从.env文件获取环境变量到docker-compose.yml?

将环境变量传递给 application.yml

无法访问“database.yml”文件中的环境变量