#windows #docker #fonts #registry
#Windows #docker #шрифты #реестр
Вопрос:
Я создаю docker, которому нужны некоторые специальные шрифты (на самом деле японские), я скопировал все шрифты в соответствующую папку, но этого недостаточно, их необходимо зарегистрировать. Я создаю reg-файл, чтобы сделать это простым способом, и внутри контейнера работает хорошо (шрифты установлены), но когда я попытался включить его в docker, я получил предупреждение, а также появился процесс, который не запускался, и шрифты не зарегистрированы, я попробовал с помощью CMD и ENTRYPOINTно ничего
Это часть файла docker:
FROM microsoft/aspnet
...
COPY YUGOTH*.TTC C:/windows/fonts/
COPY Fonts.reg /
CMD reg import C:Fonts.reg
# ENTRYPOINT ["reg import C:Fonts.reg"]
Это сборка, на самом деле кажется, что импорт выполняется в отдельном контейнере (501a7ca70d2b), а затем удаляется, это может быть проблемой?
Я мог бы сделать то же самое вне docker, используя параметр exec, но мне нужно, чтобы установка шрифта выполнялась автоматически, а не вручную.
docker exec -d docker_image reg import c:Fonts.reg
Таким образом я проверяю, когда шрифты зарегистрированы (внутри docker)
reg query "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionFonts" /s
и это файл Fonts.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFonts]
"YUGOTHB"="YUGOTHB.TTC"
"YUGOTHL"="YUGOTHL.TTC"
"YUGOTHM"="YUGOTHM.TTC"
"YUGOTHR"="YUGOTHR.TTC"
Комментарии:
1.
CMD
просто задает команду, которая будет выполняться при запуске контейнера; он ничего не делает немедленно. Вы имеете вRUN
виду эту команду как часть сборки образа?2. Я предполагаю, что файл регистра должен запускаться при запуске контейнера, ну, неважно, это помогает, большое спасибо
Ответ №1:
Попробуйте использовать RUN вместо CMD или ENTRYPOINT.