Docker 多阶段构建,python 和 java

Docker multistage build, python and java

我正在尝试使用 https://docs.docker.com/develop/develop-images/multistage-build/

我需要 openjdk 8 和最新的 panda on alpine (我正在安装 spark / pyspark)

我最初尝试使用 FROM openjdk:8-alpine 然后安装所有 python3 / pandas ,但事实证明安装 pandas 在 alpine 中相当困难,你需要最新的 alpine docker 图片 ()

所以我需要 FROM openjdk:8-alpineFrom alpine:latest

我的问题是我如何知道从每个步骤复制哪个目录(?)?

如果我这样做

FROM openjdk:8-alpine
From alpine:latest

我需要从 openjdk:8-alpine

复制 java8 相关内容

如果我做反向

From alpine:latest
# install panda 
FROM openjdk:8-alpine

我需要副本(什么??)

当您使用多阶段构建时,您通常会在第一阶段创建一个工件(例如编译的应用程序),然后在第二阶段将其复制到更精简的基础映像。创建最终图像时,第一阶段的所有内容都会被丢弃。

根据您的评论,我想我明白您需要从同时具有 JDK8 和最新的 alpine 的图像开始。多阶段构建在这里无济于事。您最终只会将 JDK 复制到 alpine:latest 最后阶段。

我会复制原始 Dockerfile jdk:8-alpine,将第一行更改为 FROM alpine:3.10 并创建您自己的基础映像。

如果您需要基于此映像的 pyspark,请复制 original dockerfile 并将第一行 FROM openjdk:8 替换为您之前创建的基本映像。