gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:20:15 24 4
gpt4 key购买 nike

我正在尝试生成 Doxygen Dockerfile 中的文档使用 Docker-compose同时运行所有服务。

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

这是我的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将其作为容器启动命令执行,并将当前目录挂载为绑定(bind)挂载。
它会在 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 的上下文的基目录用作绑定(bind)源服务。

关于Docker 卷无法与 Docker-compose 一起生成 Doxygen 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60477259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com