【问题标题】:Pushing docker image to aws ecr and bash scripting将 docker 映像推送到 aws ecr 和 bash 脚本
【发布时间】:2020-08-16 19:35:53
【问题描述】:

我正在尝试将图像以一行方式推送到 aws ecr,因此无需手动干预。我认为这有效,但今晚没有。我认为这会获取第一个命令的输出并将其作为一个命令单独执行,然后在完成后执行第三个命令。

aws ecr get-login --no-include-email --region us-west-2 | bash | docker push XXYYXXYYXXYY.dkr.ecr.us-west-2.amazonaws.com/test-sns-stack

第一个命令的输出格式如下:

docker login -u AWS -p eyJwYXlsb2FkIjoicldnSWpITlpFZGhWQW1BdG1hcDB4SmYxYm9QbllTL0ZrVi9USWx0cTlnVUxtc1dpOVFVeW1MT2RLNy9tZmZCZ2l0SW9WRFBSRG1EWmxLYWozOGVwRXJqMy9TTW5oQUwxVWVBSHUrZFZCcEN0ZU1wTnVoVmdaa3BjQm14aWszTWRw....

当我手动运行 aws ecr login..., docker login -u .... docker push... 我们很好。

但是运行一个单线显然无法登录。在我看来(!)好像它没有等到命令执行。

抨击不是我的强项。

【问题讨论】:

    标签: bash docker amazon-ecr


    【解决方案1】:

    The documentation 警告使用get-login

    当您执行此 docker login 命令时,命令字符串可以在进程列表 (ps -e) 显示中对您系统上的其他用户可见。由于 docker login 命令包含身份验证凭据,因此您系统上的其他用户可能会以这种方式查看它们。他们可以使用凭证来获得对您的存储库的推送和拉取访问权限。如果您不在安全系统上,则应使用上述 ecr get-login-password 命令。

    最佳做法是使用get-login-password,正如the same documentation 所说:

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
    

    现在,您要执行的docker push 命令只有在登录成功时才有意义。这可以使用&& 运算符来实现。使用您的示例,完整的行将是:

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin XXYYXXYYXXYY.dkr.ecr.us-west-2.amazonaws.com && docker push XXYYXXYYXXYY.dkr.ecr.us-west-2.amazonaws.com/test-sns-stack
    

    您可以在this answer 中阅读有关&& 运算符和其他运算符的更多信息。

    【讨论】:

    • 你回答了我的另一个问题,我没有问它!太好了,谢谢。这个警告​​一直困扰着我。
    【解决方案2】:

    我认为这里的主要问题是关于 bash | 的前提。管道中的命令实际上是并行运行的,这意味着它们同时开始,但不一定同时结束。

    && 替换最后一个管道可能会解决您的问题:

    aws ecr get-login --no-include-email --region us-west-2 | bash && docker push XXYYXXYYXXYY.dkr.ecr.us-west-2.amazonaws.com/test-sns-stack
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 2020-09-09
      • 2017-08-13
      相关资源
      最近更新 更多