我有 docker 容器,我运行它,一段时间后它必须执行这一行
$(aws ecr get-login --region $AWS_DEFAULT_REGION | sed -e 's/-e none//g')
现在奇怪的是 - 当我在本地计算机 (Windows) 上运行它时,它通过并写入 Login Succeeded
当我在 Linux-Ami 代理上运行它时,一切正常,但是当它到达这一行时它输出
/app/ops/release/docker-run.sh: 51:/app/ops/release/docker-run.sh: aws: 未找到
我很困惑,因为无论何时执行,我都在使用 docker 实际上拥有相同的环境。唯一的非 docker 部分是当我构建图像并运行它时(在这部分我理解是否存在一些差异),但是其他所有内容都在两个环境中基于相同 Dockerfile 的容器中运行。
唯一真正的区别可能是在启动时传递到容器中的环境变量。
有什么想法吗?
为此容器构建镜像的 Dockerfile 的一部分是 RUN pip install --upgrade awscli
最佳答案
发现问题。
我将所有环境变量传递到容器中 -> 在 linux 上,我传递了诸如 PATH
之类的变量并销毁自动查找正确的 bin
文件夹。
如果我将其称为 /usr/local/bin/aws
,它可以在两个系统上运行。仅传递相关环境变量后,aws
即可开箱即用。
关于linux - Docker 容器 - 在 Win 和 Linux 上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652142/