docker - 在多阶段 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)?
解决方案
您有 2 个“FROM”表示两个单独的图像。如果您需要两个框架,则选择很少
- 使用基础 docker 镜像,然后安装 python 和 maven
- 使用 python 镜像,然后安装 maven。您需要为 Maven 进行必要的设置。
- 使用 maven 映像,然后安装 python。您需要为 python 进行必要的设置。
- 寻找已经安装了 python 和 maven 的镜像,由其他人共享。(例如https://hub.docker.com/r/openkbs/jre-mvn-py3)。它可能包括您不需要的不必要的东西。
推荐阅读
- php - 如何在php中完全解码base64字符串?
- c# - 尝试根据属性类型从 DataTable 中删除特定列
- c++ - 用于保存任何维度数组的 C++ 变量
- user-interface - 有没有使用 Solidity 创建 GUI 的选项?
- reactjs - onChange 中的多个函数?我看到的答案不起作用
- data-structures - 使用堆栈将中缀转换为后缀表达式时该怎么办?
- javascript - 如何导航到另一个页面而不在 NextJs 中重新加载整个页面?
- selenium - 是否可以使用 Selenium 关闭在不同会话中打开的所有浏览器?
- python - 来自 python 目录的 Pandas.read_csv 文件
- hyperledger-fabric - Hyperledger Fabric golang 链码无法按预期工作,手动将数据存储在分类帐上,但在尝试通过函数调用存储时却没有