2

我正在尝试pv在我的 Dockerfile 中使用该命令,但是当我调用构建过程时,屏幕上没有显示任何内容。

我制作了一个非常简单的 Dockerfile 版本:

FROM debian:jessie

RUN apt-get update && apt-get install -y pv

RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -L 5 -s56 > /dev/null

如果我在一个简单的终端中运行命令,我会得到以下输出:

35 B 0:00:07 [5.35 B/s] [================================================================>                                         ] 62% ETA 0:00:04`

但是当我像这样运行我的 docker build 时,docker build -t foo .我只得到了这个:

Sending build context to Docker daemon 2.048 kB
Step 1 : FROM debian:jessie
 ---> 040bf8e08425
Step 2 : RUN apt-get update && apt-get install -y pv
 ---> Using cache
 ---> 155e9ebf615f
Step 3 : RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -L 5 -s56 > /dev/null
 ---> Running in 3afdb7b5822c
 ---> 6fcf83d0cd02
Removing intermediate container 3afdb7b5822c
Successfully built 6fcf83d0cd02

有没有办法让这个pv命令工作?

谢谢 !

4

1 回答 1

3

使用pv -for pv --force,它将按照您期望的方式工作。引用 pv 的手册页:

   -f, --force
          Force output.  Normally, pv will not output any visual display if standard error is no  a  terminal.
          This option forces it to do so.

我不知道这是否是三年前提出这个问题时的一个选项,但它现在有效。

在我的 Dockerfile 中使用它,如下所示:

RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -f -L 5 -s57 > /dev/null

在此过程中,我得到以下示例输出:

Step 3/3 : RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -f -L 5 -s57 > /dev/null
  ---> Running in 57c657f93610
25.0 B 0:00:05 [5.21 B/s] [==============>                     ] 44% ETA 0:00:06

...另外,要获得“100%”正确,您需要运行pv -s57echo -n 取消换行符。

于 2019-09-05T22:20:19.943 回答