2017-08-14 103 views
0

我有一个包含泊坞文件:`curl`命令不返回任何在Dockerfile而它在所有其他Linux系统

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 

最后一行命令回声版本预计在任何Linux命令行如果安装curl,但在docker build期间没有返回版本。

+0

它没有我的系统上也返回任何东西:/ – Ayushya

+0

@Ayushya,这个命令是根据我的需要定制。您没有足够的信息来获取结果。主要问题是它在一个普通的shell上工作,但不能在'Dockerfile'中工作。 –

+0

在'RUN curl -v myURL'之前添加一个调试步骤,看看你得到了什么? –

回答

0

@ TarunLalwani的评论让我想到了一种为我节省了很多时间的方法。

这是关于我的resolv.conf文件,它没有正确设置,curl无法访问URL;但由于在此之前我使用了一些cutgrep命令,我无法弄清楚。

我一派,我发现我应该把我所期望的配置为resolve.conf,那么为了能够解决该URL(described here)在一个RUN命令执行curl

我有这个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