我想使用'秘密' (密码等)来自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'无论如何。
感谢您的回复。
答案 0 :(得分:1)
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
将在容器环境中可用。