Docker 使用 AWS CLI 的多阶段
Docker multi-stage with AWS CLI
我正在 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 吗?
谢谢!
pip
是标准的 Python 包管理器。除了在 /usr/bin
(或当前环境的 bin
目录)中安装包装器脚本外,它还在 .../lib/pythonX.Y/site-packages/...
树下安装了一些库代码。此外,允许包依赖于其他包,因此它不会只是 site-packages
目录中的单个目录。
简而言之:您将需要 Python 解释器和 pip install
安装的所有内容,因此您应该 运行 在您的派生映像中命令自己。
我正在 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 吗?
谢谢!
pip
是标准的 Python 包管理器。除了在 /usr/bin
(或当前环境的 bin
目录)中安装包装器脚本外,它还在 .../lib/pythonX.Y/site-packages/...
树下安装了一些库代码。此外,允许包依赖于其他包,因此它不会只是 site-packages
目录中的单个目录。
简而言之:您将需要 Python 解释器和 pip install
安装的所有内容,因此您应该 运行 在您的派生映像中命令自己。