Reu*_*ani 6 docker docker-compose
我有一个需要两个环境变量的 Dockerfile:
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)
我使用以下命令通过我的撰写文件从主机传递它们:
build:
# ...
args:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)
我的问题是,在某些流中有一个 IAM 角色集(并且没有环境变量),我不想使用环境变量。但即使它们在主机上不存在,它们似乎在构建过程中也被设置为空字符串。
我试过这个:
run if [ -z "$AWS_ACCESS_KEY_ID" ]; then unset AWS_ACCESS_KEY_ID; fi
run if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then unset AWS_SECRET_ACCESS_KEY; fi
run env # see if set
Run Code Online (Sandbox Code Playgroud)
但它不起作用(即使未在主机环境中设置,变量仍然设置)。
我欢迎在构建 docker 时混合 env vars 和 IAM 角色的另一种解决方案。
不同之处run
在于Dockerfile
不互相影响,为了实现您的目标,建议将它们合并为一个run
,如下所示,仅供参考:
run if [ -z "$AWS_ACCESS_KEY_ID" ]; then unset AWS_ACCESS_KEY_ID; fi && \
if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then unset AWS_SECRET_ACCESS_KEY; fi && \
env
Run Code Online (Sandbox Code Playgroud)
然后,你会发现AWS_ACCESS_KEY_ID
中 no 被设置为空值env
。
并且,在尝试时,建议使用docker-compose build --no-cache
来测试。
最后,为什么你会看到空值?
我做了一个实验,好像如果在 中没有ENV
设置Dockerfile
,同时env for this variable set
在 HOST 中没有设置,则在 docker build 时会自动更改为ARG
in ,因为没有设置值,所以它是空的。Dockerfile
one ENV variable
ARG
归档时间: |
|
查看次数: |
2130 次 |
最近记录: |