`curl`命令在Dockerfile中没有返回任何内容,而它在其他所有Linux系统中都有效

时间:2017-08-14 10:11:18

标签: curl docker dockerfile

我有一个包含以下内容的Docker文件:

FROM ubuntu
MAINTAINER Zeinab Abbasimazar
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends apt-utils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget unzip curl aptitude
RUN aptitude search curl
RUN VERSION=$(curl myURL 2>&1 | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | egrep component-[0-9].[0-9].[0-9]$ | cut -d'-' -f3); echo $VERSION

如果安装了curl,则在任何linux命令行中都会按预期执行最后一行命令echos版本,但在docker build期间不会返回任何版本。

1 个答案:

答案 0 :(得分:0)

@TarunLalwani的评论让我找到了一种节省了大量时间的方法。

关于我的resolv.conf文件的全部内容未正确设置且curl无法访问该网址;但由于我之前使用了cutgrep命令,所以我无法弄明白。

我用谷歌搜索,发现我应该为resolve.conf设置所需的配置,然后在一个curl命令中执行RUN,以便能够解析URL({{ 3}})。

我现在有Dockerfile,这很好用:

FROM ubuntu
MAINTAINER Zeinab Abbasimazar
RUN apt-get update
RUN apt-get install -y curl
RUN echo "nameserver myDNS\n" > /etc/resolv.conf; \
    export VERSION=$(curl myURL 2>&1 | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | egrep component-[0-9].[0-9].[0-9]$ | cut -d'-' -f3); \
    echo $VERSION