use*_*003 3 environment-variables docker docker-compose
我可以指定一个arg,docker-compose.yml如下所示(例如RAILS_ENV)
version: '3'
services:
web:
build:
context: .
args:
RAILS_ENV: production
Run Code Online (Sandbox Code Playgroud)
使用Dockerfile它ARG并设置一个,ENV以便使用该环境变量构建我的图像:
FROM ruby:2.5.1
# ...
ARG RAILS_ENV
ENV RAILS_ENV=$RAILS_ENV
# ...
# Image contains environment variable `$RAILS_ENV` as `"production"`
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用硬编码值以外的其他值怎么办"production"?
有没有办法将变量docker-compose.yml动态传递到文件中?
另外,如果我不传递任何内容,我可以指定默认值(例如development)吗?docker-compose.yml
谢谢!
是的,你可以这样做。
首先,您需要.env使用变量创建(与您的位于同一位置Dockerfile):
RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
您没有将此文件提交到存储库(您应该将其添加到.gitignore)。然后您可以开始在以下位置使用它们Dockerfile:
version: '3'
services:
web:
build:
context: .
args:
RAILS_ENV: ${RAILS_ENV}
Run Code Online (Sandbox Code Playgroud)
有两种方法可以定义变量的默认值:
如果 VARIABLE 在环境中未设置或为空,则 ${VARIABLE:-default} 计算为默认值。仅当环境中未设置 VARIABLE 时,${VARIABLE-default} 才会计算为默认值。
例如:
version: '3'
services:
web:
build:
context: .
args:
RAILS_ENV: ${RAILS_ENV:-development}
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多内容:https ://docs.docker.com/compose/compose-file/#variable-substitution
| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |