Docker卷无法与Docker组合生成Doxygen文档



我正在尝试使用Docker-composeDockerfile中生成Doxygen文档,以便同时运行所有服务。

目标是在容器中生成文档,并在本地检索生成的文件。

这是我的Dockerfile:

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y doxygen doxygen-gui doxygen-doc graphviz
WORKDIR /doc
COPY Doxyfile .
COPY logo.png .
RUN doxygen Doxyfile

这是带有文档服务的docker-compose

version: "3"
services:
doc:
build: ./doc
volumes:
- ./documentation:/doc

在容器上生成文档,并生成一个名为"documentation"的新目录,但该目录为空。我如何解决这个问题,以便用容器中生成的文档进行填充?

目标是在容器中生成文档在本地检索生成的文件。

您在此处使用本地目录作为装载源:- ./documentation:/doc
它将使容器上的/doc目录与主机上的./documentation同步,但内容的来源是主机,而不是容器
要在主机上获取生成的文件,可以使用命名卷而不是:

volumes:
- documentation-doxygen:/doc

在容器运行之后,您可以使用docker volume inspect documentation-doxygen获得有关该卷(位置等(的更多信息。

但是,如果您装载卷只是为了获得创建的文件夹,我认为您根本不需要使用卷
一个更直接的选择是在容器运行后简单地复制主机上的文件夹:

docker copy DOC_CONTAINER_ID:/doc ./documentation-doxygen  

作为另一种选择,如果您想在本地上下文中执行doxygen Doxyfile,即在文件夹中,但在容器中执行(在本地环境中可能的方式(,则可以将RUN替换为CMDENTRYPOINT,将其作为容器启动命令执行,并将当前目录作为绑定装载装载
它将在Dockerfile中为您保留一些副本。

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y doxygen doxygen-gui doxygen-doc graphviz
WORKDIR /doc
# REMOVE THAT COPY Doxyfile .
# REMOVE THAT COPY logo.png .
ENTRYPOINT doxygen Doxyfile

码头工人组成部分:

version: "3"
services:
doc:
build: ./doc
volumes:
- ./:/doc

这里CCD_ 15被指定为使用CCD_ 16服务的上下文的基本目录作为绑定源。

最新更新