在 Docker 中将秘密环境变量存储为单独的数据容器
Storing secret env variables as separate data container in Docker
我想在 docker-compose 中使用来自主机 OS 的 'secret'(密码等)env 变量。
我认为使用数据容器可以实现这一点。但它不起作用 - 'No file present'。请告知哪里出了问题,以及这种方式是否可行。
docker-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_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
换人
Compose也可以substitute environment variables进入config
如果您在 运行 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
将在容器环境中可用。
我想在 docker-compose 中使用来自主机 OS 的 'secret'(密码等)env 变量。
我认为使用数据容器可以实现这一点。但它不起作用 - 'No file present'。请告知哪里出了问题,以及这种方式是否可行。
docker-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_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
换人
Compose也可以substitute environment variables进入config
如果您在 运行 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
将在容器环境中可用。