Docker多阶段构建,Python和Java

时间:2019-12-10 10:37:00

标签: pandas docker alpine

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

我需要openjdk 8和高山上的最新熊猫 (我正在安装spark / pyspark)

我最初尝试使用FROM openjdk:8-alpine,然后安装所有python3 / pandas,但事实证明,在高山地区安装熊猫非常困难,您需要最新的高山docker映像(Installing pandas in docker Alpine

所以我需要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

我需要复制(什么?)

1 个答案:

答案 0 :(得分:0)

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

从您的评论中,我认为我了解您需要从同时具有JDK8和最新Alpine的映像开始。多阶段构建在这里无济于事。您最终只会将JDK复制到alpine:latest最后阶段。

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

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