1

当我在 docker 容器中运行 cloc 时,与独立运行相比,它似乎不会递归搜索给定的目录。

Dockerfile:

FROM python:3.6.2-alpine3.6

VOLUME "/data"
WORKDIR /data

RUN apk --no-cache add cloc=1.72-r2

在没有 docker 容器的情况下运行 cloc 我得到以下信息:

cloc src\main\java\ --by-file --unix --report-file=temp.csv
      19 text files.
      19 unique files.
      12 files ignored.
Wrote temp.csv

使用 docker 容器运行它时,会发生以下情况:

docker run --rm -it -v C:\repos\code-repository\:/data cloc-image cloc src/main/java --by-file --unix --report-file=/data/temp2.csv
       0 text files.
       0 unique files.
       2 files ignored.

有任何想法吗?我有:

  • 检查了 docker 容器(root)中用户的权限。
  • 使用ash我检查了容器内部是否正确映射了卷,并且所有文件都存在。
  • 检查容器内的 cloc 版本是否确实与本地安装相同(均为 1.72)。

编辑1:

有趣的发现,这种行为只在 Windows 上显示,相同的 Dockerfile/container 在 linux 机器上运行良好。

4

1 回答 1

1

debian:stretch我在 Docker for Windows 上运行的基于 - 的容器上遇到了同样的问题,其中cloc运行卷的对象是本地目录。解决方案是添加--follow-linkscloc

$ cloc .

# Only returned results of top-level directory

使固定:

$ cloc --follow-links .

# Included nested files
于 2019-01-24T15:24:30.237 回答