如何在 docker 中 运行 opengrok?

How to run opengrok in docker?

我正在尝试按照本教程进行操作: https://hub.docker.com/r/opengrok/docker/

这是我所做的:

mkdir /home/testuser/OpenGrokTest
cp -R SmallCppProject /home/testuser/OpenGrokTest/
docker pull opengrok/docker
docker run -d -v /home/testuser/OpenGrokTest/:/opengrok/src -p 8080:8080 opengrok/docker:latest

现在我可以使用 localhost:8080 访问 opengrok,它就在那里:

但是,如您所见,什么也没有。 该项目非常小(只有 5 个 cpp 文件),我也等了大约 15 分钟“以防万一”,但没有任何改变。

我觉得这是一个非常简单的问题,但是教程没有提到任何额外的步骤,所以我不知道哪里出了问题。

我在发布问题后 5 分钟就解决了这个问题...但我相信这可能对将来的人有用,因为它是一个陷阱,所以我会离开它。 opengrok教程没有问题,问题出在我的SmallCppProject里面。它有 .git 目录,在该目录中有指向 repo 的相对符号链接。那些符号链接被破坏了,因为当我复制项目时,目录被更改了。显然这是一个问题,因为在删除 .git 目录后,现在一切都很好。虽然我认为 opengrok 应该为此类事情“做好准备”并忽略断开的链接。

编辑: 实际上,这与损坏的符号链接无关,它通常与 .git 目录有关,因此 docker 的最新 opengrok 图像 显然有问题 。当前版本是 1.7.2,一般来说,如果我只输入源代码,opengrok 就可以工作,但是如果我将这些源代码添加到 git,那么 opengrok 就无法初始化。

如果您仔细查看您的日志,它可能会说 OpenGrok 无法将您的本地 git 存储库与远程 git 存储库同步,因为缺少 git 密钥或 git用户名和密码。

如果您的源代码包含 git 文件夹,OpenGrok 可以自动执行 git pull,并使您的 git 存储库保持最新。但如果没有配置 git 键或 username/password,它只会记录错误并跳过索引项目,我认为这不是一个好的设计。

正确的解决方案是告诉 OpenGrok 禁用自动同步。

打开docker容器的cli window,cd到“/opengrok/etc”。在这个文件夹中,有一个 mirror.yml 文件。 执行以下命令:

echo "project:
  .* :
    disabled: true
">mirror.yml

并重启容器。

OpenGrok 将忽略包含 .git 文件夹的所有项目的同步。 如果您只想禁用某个项目的自动同步,请将“.*”替换为您要忽略的项目名称。