首页 文章

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

提问于
浏览
2

我想在docker-compose中使用来自主机操作系统的'secret'(密码等)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 回答

  • 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进入配置

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

    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 将在容器环境中可用 .

相关问题