我正在尝试使用Docker-compose
在Dockerfile
中生成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
替换为CMD
或ENTRYPOINT
,将其作为容器启动命令执行,并将当前目录作为绑定装载装载
它将在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服务的上下文的基本目录作为绑定源。