如何使用Docker基于外部文件指定.env文件变量

时间:2018-07-18 20:23:18

标签: docker docker-compose environment-variables

就像标题中所说的那样,我想在.env文件中使用docker在外部文本文件中指定的值作为特定变量。例如,假设我有一个docker-compose.yml文件,如下所示:

services:
    someService:
        env_file:
        - .env

在那个.env文件中,我有一个这样定义的变量:

SOME_VARIABLE=A,B,C,D,E,F,G,H

我想知道是否有某种方法可以在名为A,B,C,D,E,F,G,H的文件中定义vars.txt,如下所示:

A
B
C
D
E
F
G
H

使用换行符作为分隔符来存储逗号分隔的值SOME_VARIABLE,让我的vars.txt等于A, B, C, D, E, F ,G中的所有内容吗?

1 个答案:

答案 0 :(得分:0)

我使用以下配置: Docker guide

version: '3.1'
services:

  celery:
    build:
      context: .
      dockerfile: Dockerfile-celery
    container_name: cronjobs
    restart: always
    environment:
      TZ: GMT
    env_file:
    - ./variables.env
    tty: true

我创建了一个variables.env文件,然后将以下行添加到我的docker-compose.yml文件中:

env_file:
- ./variables.env

我的文件variables.env的内容是:

C_FORCE_ROOT=1
TEST=TEST
MYENV=MY ENV

然后我重新创建我的容器,并通过bash对其进行访问,并测试是否创建了我的env变量:

# printenv
HOSTNAME=979980b0d05b
PYTHON_PIP_VERSION=9.0.1
HOME=/root
GPG_KEY=97FC712E4C024BBEA48A61ED3A5CA953F73C700D
TERM=xterm
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
CELERY_VERSION=3.1.25
TEST=TEST
PYTHON_VERSION=3.5.3
  

C_FORCE_ROOT = 1

CELERY_BROKER_URL=amqp://guest@rabbit
MYENV=MY ENV
PWD=/home/user
TZ=GMT