将秘密env变量存储为Docker中的单独数据容器

时间:2016-02-15 21:56:02

标签: docker docker-compose

我想使用'秘密' (密码等)来自docker-compose内主机操作系统的env变量。

我认为可以使用数据容器来实现这一点。但它没有用 - '没有文件存在'。请告知错误,如果这样做可行。

搬运工-compose.yml

version: '2'
services:
  web:
    build: .
    command: bundle exec puma
    env_file: .env
    environment:
      - RACK_ENV=production
      - RAILS_ENV=production
    volumes_from:
      - config
    ports:
      - "3000:3000"
    links:
      - db

  config:
    image: busybox
    volumes:
      - /myapp/config/.env:.env

我还尝试将/myapp/config:/config用作卷,将/config/.env用作env_file,但结果相同。

Dockerfile没有提及或引用' config'或者' .env'无论如何。

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

撰写env文件

env_file文件由docker-compose在本地读取,位于您运行它的目录中。然后在运行时将变量传递给容器(如docker run -e)。

web:
  build: .
  command: bundle exec puma
  env_file: ./.env
  environment:
    - RACK_ENV=production
    - RAILS_ENV=production
  ports:
    - "3000:3000"
  links:
    - db

换人

撰写也可以substitute environment variables进入配置

如果您使用下面的环境定义SECRET_HOST_ENV_VARIABLE运行主机时设置docker-compose

web:
  build: .
  command: bundle exec puma
  environment:
    - RACK_ENV=production
    - RAILS_ENV=production
    - SECRET_ENV_VARIABLE=${SECRET_HOST_ENV_VARIABLE}
  ports:
    - "3000:3000"
  links:
    - db

SECRET_ENV_VARIABLE将在容器环境中可用。