Я хочу использовать pandoc внутри докера. Изображение выглядит так:
FROM debian:buster-slim
RUN apt-get update && apt-get install -y pandoc texlive
WORKDIR /home
Это build.sh
внутри проекта:
cp *.ttf /usr/local/share/fonts/ && fc-cache;
pandoc -o output.pdf input.md
что я хочу бежать так:
docker run --rm -t -v $(pwd):/home pandoc_container build.sh
Это приводит к тому, что output.pdf
является владельцем root на моем хосте. При выполнении:
docker run --user $(id -u) --rm -t -v $(pwd):/home pandoc_container build.sh
вместо этого файл будет принадлежать мне, но файлы шрифтов не могут быть скопированы в этот каталог из-за отсутствия разрешений на запись. Добавление
RUN chmod a+w /usr/local/share/fonts/
в Dockerfile это решает, но затем команда fc-cache
терпит неудачу с большим количеством ошибок failed to write cache
числе из-за отсутствия разрешений на запись во многих каталогах.
Копирование файлов шрифтов в ~/.fonts
также не будет работать, поскольку пользователь, созданный с помощью --user $(id -u)
, фактически не существует в контейнере:
I have no name!@0d9c6a272ae1:/home$
и, следовательно, не имеет домашнего каталога, который может быть проанализирован с помощью fc-cache
.
Какой элегантный способ решить эту проблему?