docker 容器中的 cpplint 行为异常
cpplint misbehaving in docker container
我正在尝试 运行 cpplint.py 在 Docker 容器中。
这是我用来制作图像的 Docker 文件 lint:latest :
FROM ubuntu:18.04
# update and install dependencies
RUN apt-get update \
&& apt-get -y -qq install software-properties-common \
&& apt-get -y -qq install python3.7 \
&& ln -s /usr/bin/python3 /usr/bin/python
# install our linter
COPY cpplint.py /usr/sbin
RUN chmod +x /usr/sbin/cpplint.py
# install a test file
COPY Types.h .
我运行容器是这样的:
$ docker run -it --rm lint:latest bash
root@17a20248ee33:/# cpplint.py Types.h
root@17a20248ee33:/# echo $?
1
显示 cpplint.py 返回错误代码。
请注意 运行ning cpplint.py --help
正常显示帮助屏幕。篇幅太长就不一一列举了。
运行 容器外的相同命令工作正常:
$ ./cpplint.py Types.h
Types.h:0: No #ifndef header guard found, suggested CPP variable is: _LINT_TYPES_H_ [build/header_guard] [5]
Done processing Types.h
Total errors found: 1
根据 Docker's run reference,STDOUT 和 STDERR 都默认连接到终端。我知道 cpplint 将错误写入 STDERR,但不要认为这就是为什么我在容器内 运行 时看不到相同的输出。我尝试了 2>&1
将 STDERR 强制到 STDOUT 的操作并得到了相同的结果。
当我在容器中 运行 时为什么看不到 cpplint.py 的输出,有什么想法吗?
在容器中尝试使用 pip3
安装 cpplint.py
FROM ubuntu:18.04
# update and install dependencies
RUN apt-get update \
&& apt-get -y -qq install software-properties-common \
&& apt-get -y -qq install python3.7 python3-pip \
&& pip3 install cpplint
# install a test file
COPY Types.h .
我正在尝试 运行 cpplint.py 在 Docker 容器中。
这是我用来制作图像的 Docker 文件 lint:latest :
FROM ubuntu:18.04
# update and install dependencies
RUN apt-get update \
&& apt-get -y -qq install software-properties-common \
&& apt-get -y -qq install python3.7 \
&& ln -s /usr/bin/python3 /usr/bin/python
# install our linter
COPY cpplint.py /usr/sbin
RUN chmod +x /usr/sbin/cpplint.py
# install a test file
COPY Types.h .
我运行容器是这样的:
$ docker run -it --rm lint:latest bash
root@17a20248ee33:/# cpplint.py Types.h
root@17a20248ee33:/# echo $?
1
显示 cpplint.py 返回错误代码。
请注意 运行ning cpplint.py --help
正常显示帮助屏幕。篇幅太长就不一一列举了。
运行 容器外的相同命令工作正常:
$ ./cpplint.py Types.h
Types.h:0: No #ifndef header guard found, suggested CPP variable is: _LINT_TYPES_H_ [build/header_guard] [5]
Done processing Types.h
Total errors found: 1
根据 Docker's run reference,STDOUT 和 STDERR 都默认连接到终端。我知道 cpplint 将错误写入 STDERR,但不要认为这就是为什么我在容器内 运行 时看不到相同的输出。我尝试了 2>&1
将 STDERR 强制到 STDOUT 的操作并得到了相同的结果。
当我在容器中 运行 时为什么看不到 cpplint.py 的输出,有什么想法吗?
在容器中尝试使用 pip3
cpplint.py
FROM ubuntu:18.04
# update and install dependencies
RUN apt-get update \
&& apt-get -y -qq install software-properties-common \
&& apt-get -y -qq install python3.7 python3-pip \
&& pip3 install cpplint
# install a test file
COPY Types.h .