Docker 卷无法与 Docker 一起使用-compose 生成 Doxygen 文档
Docker volume not working with Docker-compose to generate Doxygen documentation
我正在尝试使用 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" 的新目录,但它是空的。我该如何解决它以填充容器中生成的文档?
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
替换为 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
和 docker-compose 部分:
version: "3"
services:
doc:
build: ./doc
volumes:
- ./:/doc
此处./
指定使用doc
服务上下文的基本目录作为绑定源。
我正在尝试使用 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" 的新目录,但它是空的。我该如何解决它以填充容器中生成的文档?
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
替换为 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
和 docker-compose 部分:
version: "3"
services:
doc:
build: ./doc
volumes:
- ./:/doc
此处./
指定使用doc
服务上下文的基本目录作为绑定源。