如何订购多个FROM?

问题描述 投票:-2回答:1

我有问题在Dockerfile中订购多个FROM。我想同时使用两个bash工具,例如shell脚本中的bc和g ++。

第一次尝试:

FROM gcc:7.4

FROM alpine:3.9
RUN apk add --no-cache bash gawk sed grep bc coreutils

RUN g++ ...

---> Running in ...
/bin/sh: g++: not found

第二次尝试:

FROM alpine:3.9
RUN apk add --no-cache bash gawk sed grep bc coreutils

FROM gcc:7.4

RUN g++ ...

现在给

/test/test.sh: line 3: bc: command not found

有什么建议?

linux bash docker g++ alpine
1个回答
3
投票

这不是它的工作原理。多个FROM指令允许您创建multistage Dockerfile。所有阶段都是隔离的并按顺序执行。可以从另一个阶段的一个阶段访问文件,但为了做到这一点,必须将文件复制到相应的阶段,但我不打算在此处介绍它。

但是,在您的情况下,您不需要使用多级构建,只需将gcc安装为类似于其他软件包的软件包:

FROM alpine:3.9
RUN apk add --no-cache bash gawk sed grep bc coreutils g++

RUN g++ ...

您还可以创建虚拟包,以便在完成后删除任何构建包。以下示例在使用后删除gcc

FROM alpine:3.9
RUN apk add --no-cache bash gawk sed grep bc coreutils \
    && apk add --no-cache --virtual build-dependencies g++ \
    && g++ ... \
    && apk del build-dependencies

如果这有帮助,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.