Изменить политику ImageMagick в Dockerfile - PullRequest
0 голосов
/ 19 ноября 2018

В ImageMagick недавно произошли изменения, которые прерывают преобразование из pdf в png. Мое расследование позволило мне перейти к файлу policy.xml и к этой строке:

<policy domain="coder" rights="none" pattern="PDF" />

, который нужно изменить на этот

<policy domain="coder" rights="read|write" pattern="PDF" />

(Примечание: у меня раньше не было этой проблемы).

Я могу изменить это на своем персональном компьютере, но теперь мне нужно изменить его на док-контейнере, настроенном через Dockerfile. Как я могу это сделать?

Я пробовал что-то, используя переменные окружения, но безуспешно. Вы можете увидеть мой докер-файл здесь:

https://github.com/VivianePons/public-notebooks

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Это изменение в вашем Dockerfile должно работать

ARG imagemagic_config=/etc/ImageMagick-6/policy.xml

RUN if [[ -f $imagemagic_config ]] ; then sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' $imagemagic_config ; else echo did not see file $imagemagic_config ; fi
0 голосов
/ 19 ноября 2018

Монтирование привязки во время выполнения

Во время выполнения (docker run) используйте установленный объем привязки , чтобы перезаписать policy.xml внутри контейнера.

Хороший, прямой пример этого можно найти в разделе Как использовать это изображение на официальном образе Nginx в Docker Hub.

docker run --name some-nginx -v /some/content:/usr/share/nginx/html -d nginx

Здесь флаг -v является вашим креплением для привязки.-v /some/content:/usr/share/nginx/html говорит "замените /usr/share/nginx/html в контейнере содержимым /some/content на моем хосте. Конечный результат для пользователя - если /some/content имеет index.html или другую домашнюю страницу по умолчанию, как определено в nginx.conf контейнера, Nginx не потребует никаких изменений конфигурации, потому что конфигурация Nginx по умолчанию уже ищет файл index.html в этом расположении файловой системы.

ПРИМЕЧАНИЕ : монтирование привязки не является аддитивнымКаталог на образе будет полностью заменен монтируемым.

Dockerfile COPY

Или во время сборки (docker build) используйте COPY в вашем Dockerfile дляВыпекайте обновленный policy.xml прямо в контейнер, крепление не требуется.

COPY ./path/to/policy.xml /path/in/docker/image/policy.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...