首页 > 解决方案 > 在多阶段 docker 文件中重新使用 CLI 安装

问题描述

我正在编写一个多阶段的 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: Cannot run program "cfn-cli": error=2, No such file or directory

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

我认为更普遍的问题是,我如何一步依赖两个框架(Maven 和 python CLI)?

标签: docker

解决方案


您有 2 个“FROM”表示两个单独的图像。如果您需要两个框架,则选择很少

  1. 使用基础 docker 镜像,然后安装 python 和 maven
  2. 使用 python 镜像,然后安装 maven。您需要为 Maven 进行必要的设置。
  3. 使用 maven 映像,然后安装 python。您需要为 python 进行必要的设置。
  4. 寻找已经安装了 python 和 maven 的镜像,由其他人共享。(例如https://hub.docker.com/r/openkbs/jre-mvn-py3)。它可能包括您不需要的不必要的东西。

推荐阅读