如何订购多个FROM?
how to order multiple FROM?
我在 Dockerfile 中订购多个 FROM 时遇到问题。我想同时使用 bash 实用程序,例如bc 在 shell 脚本中,以及 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
有什么建议吗?
这不是它的工作原理。多个 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
如果有帮助请告诉我。
我在 Dockerfile 中订购多个 FROM 时遇到问题。我想同时使用 bash 实用程序,例如bc 在 shell 脚本中,以及 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
有什么建议吗?
这不是它的工作原理。多个 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
如果有帮助请告诉我。