Docker 卷无法与 Docker 一起使用-compose 生成 Doxygen 文档

Docker volume not working with Docker-compose to generate Doxygen documentation

我正在尝试使用 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" 的新目录,但它是空的。我该如何解决它以填充容器中生成的文档?

The goal is to generate the documentation in the container and to retrieve the generated files in local.

您在此处使用本地目录作为装载源:- ./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

和 docker-compose 部分:

version: "3"

services:
  doc:
    build: ./doc
    volumes:
      - ./:/doc

此处./指定使用doc服务上下文的基本目录作为绑定源。