在多阶段docker文件中重新使用CLI安装

在多阶段docker文件中重新使用CLI安装,docker,Docker,我正在写一个多阶段的Dockerfile。第一步是安装cli: FROM python:3 as cfngenerate RUN pip install cloudformation-cli 第二步是使用maven构建Java项目。此生成依赖于上面的CLI FROM maven as build COPY --from=cfngenerate /usr/local/bin/cfn /usr/local/bin/cfn RUN mvn package 然而,这不起作用。Maven步骤失败

我正在写一个多阶段的Dockerfile。第一步是安装cli:

FROM python:3 as cfngenerate

RUN pip install cloudformation-cli
第二步是使用maven构建Java项目。此生成依赖于上面的CLI

FROM maven as build

COPY --from=cfngenerate /usr/local/bin/cfn /usr/local/bin/cfn

RUN mvn package
然而,这不起作用。Maven步骤失败,原因是:
java.io.IOException:无法运行程序“cfn cli”:错误=2,没有此类文件或目录

如何确保CLI在第二步中可用

我认为更一般的问题是,如何在一个步骤中依靠两个框架(Maven和python CLI)?

您有2个“FROM”表示两个独立的映像。如果您需要这两种框架,那么几乎没有选择

  • 使用基本docker映像,然后安装python和maven
  • 使用python映像,然后安装maven。您需要为maven进行必要的设置
  • 使用maven映像,然后安装python。您需要对python进行必要的设置
  • 寻找一个已经安装了python和maven并由其他人共享的映像。(例如)。它可能包括你不需要的不必要的东西

  • 您的
    mvn包
    需要一个
    cfn cli
    可执行文件,但您复制了
    cfn
    。是否有任何
    cfn cli
    可以复制到另一个阶段?@AliTou是的,也复制了它,以及Python安装。现在我得到了
    /usr/local/bin/python:加载共享库时出错:libpython3.8.so.1.0:无法打开共享对象文件:没有这样的文件或目录
    它说它需要缺少一个共享库,复制的可执行文件不足以启动该程序(它需要的可能不止这一个共享库。因此复制所有共享库是不值得的)。我认为这里的多阶段方法不起作用。我建议下面的建议。最后使用了#3。感谢您的帮助:)