带有AWS CLI的Docker多阶段

时间:2019-06-19 19:59:48

标签: docker aws-cli docker-multi-stage-build

我正在Docker中建立一个多阶段构建,需要从远程映像中提取一些数据。在该远程映像中,我看到他们使用以下命令集安装了AWS CLI,以便将其放入基于Alpine的映像中:

RUN apk --no-cache add python3 && \
    pip3 install awscli && \
    aws --version

复印件说没问题

COPY --from=remote_setup /usr/bin/terraform /usr/bin/terraform
COPY --from=remove_setup /usr/bin/aws /usr/bin/aws

此处的Terraform运行良好,但是AWS却没有。输出看起来像这样:

/ # terraform -v
Terraform v0.12.2

/ # ls -lh /usr/bin | grep aws
-rwxr-xr-x    1 root     root         817 Jun 19 19:51 aws
/ # aws --version
/bin/sh: aws: not found

如果添加python3,则会出现此错误:

/ # aws --version
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
ModuleNotFoundError: No module named 'awscli'

是否有技巧将所有数据从该特定层中的命令复制到我的新层中?或者为简单起见,我应该自己在映像中安装Python和AWS CLI吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

pip是标准的Python包管理器。除了在/usr/bin(或当前环境的bin目录中安装包装程序脚本)之外,它还在.../lib/pythonX.Y/site-packages/...树下安装了大量的库代码。另外,允许包依赖于其他包,因此它不会只是site-packages目录中的单个目录。

简而言之:您将需要Python解释器和pip install所安装的所有内容,因此您应该自己在派生图像中运行该命令。