docker - 在 compose 中取消设置环境变量

我有一个需要两个环境变量的 Dockerfile:

ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY

我使用以下命令通过我的撰写文件从主机传递它们:
build:
  # ...
  args:
    - AWS_ACCESS_KEY_ID
    - AWS_SECRET_ACCESS_KEY

我的问题是,在某些流中有一个 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

但它不起作用(即使未在主机环境中设置,变量仍然设置)。

我欢迎在构建 docker 时混合 env vars 和 IAM 角色的另一种解决方案。

最佳答案

不同 runDockerfile互不影响,为达成目标,建议合二为一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

然后,你会发现没有 AWS_ACCESS_KEY_IDenv 中被设置为空值.

并且,在尝试时,建议使用 docker-compose build --no-cache去测试。

最后,为什么你看到空值?

我做了个实验,好像没有ENV设置在 Dockerfile同时,没有 env for this variable set在 HOST 中,ARGDockerfile将自动更改为 one ENV variable当 docker build 时,如 ARG没有设置值,所以它是空的。

https://stackoverflow.com/questions/52715672/

相关文章:

opencv - 具有 double 值的一维直方图opencv

opencv - 使用 OpenCV 录制视频失败,但没有给出错误

opencv - 无法让 OpenCV + macam.component + PS3Eye 工作

opencv - OpenCV中的图像转换矩阵

multithreading - Qt中的Qthreadpool

opencv - 在Ubuntu服务器11.10上安装OpenCV预构建库

opencv - 无法使用 cvMerge、DFT 进行转换

android - 如何使用三星 Galaxy S2 前置摄像头?

opencv - 摄像机旋转和跟踪平移?

opencv - OpenCvSharp引发DllNotFoundException