我正在尝试使用DoxygenDockerfile中生成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

这是带有doc服务的docker-compose:
version: "3"

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

在容器上生成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(在本地环境中可能),可以用RUNCMD替换ENTRYPOINT以将其作为容器启动命令执行并挂载当前目录作为绑定(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)源。

09-11 23:49