Цель - сгенерировать документацию в контейнере и получить сгенерированные файлы локально.
Вы используете локальный каталог в качестве источника монтирования здесь: - ./documentation:/doc
.
Это сделает каталог /doc
в контейнере синхронизированным с ./documentation
на хосте. но источником контента является хост, а не контейнер.
Чтобы получить сгенерированные файлы на хосте, вы можете использовать именованный том вместо:
volumes:
- documentation-doxygen:/doc
После запуска контейнера вы можете получить больше информация об этом томе (местоположение среди прочего) с docker volume inspect documentation-doxygen
.
Но если вы монтируете том только для того, чтобы получить созданную папку, я думаю, что вам вообще не нужно использовать том.
Более простой альтернативой является просто копирование папки на хосте. после запуска контейнера:
docker copy DOC_CONTAINER_ID:/doc ./documentation-doxygen
В качестве другой альтернативы, если вы хотите выполнить doxygen Doxyfile
в локальном контексте с точки зрения папки, но в контейнере (возможно, в локальной среде), вы можете заменить RUN
BY 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 -компонентная часть:
version: "3"
services:
doc:
build: ./doc
volumes:
- ./:/doc
Здесь ./
указано для использования в качестве источника связывания базового каталога контекста службы doc
.