将秘密envvariables作为单独的数据容器存储在Docker中

我想在docker-compose中使用来自host OS的'secret'(密码等)envvariables。

我认为可以使用数据容器来实现这一点。 但它不起作用 – “没有文件存在”。 请咨询有什么不对,如果这样做可以。

泊坞窗,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”。

感谢您的回应。

撰写env文件

这个env_file文件是由env_file docker-compose在本地读取的。 然后在运行时将variables传递给容器(如docker run -e )。

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

代换

Compose也可以将环境variablesreplace到configuration中

如果您在运行SECRET_HOST_ENV_VARIABLE 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将在容器环境中可用。