我需要创建一个Docker镜像,在运行时,应该在我的docker文件中提到的指定目录中安装一个exe。
基本上,我需要ImageMagick应用程序。创建的docker文件应该是独立于平台的,如果我在Windows中运行它应该使用Windows发行版,Linux意味着Linux发行版。如果它在系统中添加环境变量会很棒。我浏览了解决方案,但找不到合适的解决方案。
答案 0 :(得分:0)
您可以使用docker mount或卷安装(解压缩文件)到外部主机系统 -
但是,您无法通过从容器内部更新托管系统的环境变量来更改系统设置。
答案 1 :(得分:0)
我知道已经晚了,但也许有人(例如我)仍在搜索。
我最终使用了https://hub.docker.com/r/cpaitsupport/java-imagemagick/dockerfile
上的java-imagemagick docker版本您可以运行docker pull cpaitsupport/java-imagemagick
将此docker映像获取到您的docker机器。
现在是棘手的部分:因为我需要在主应用程序的docker容器内运行imagemagick。现在,您可以COPY
将文件从cpaitsupport / java-imagemagick复制到您的自定义容器中。示例:
COPY --from=cpaitsupport/java-imagemagick:latest . ./some/dir/imagemagick
现在,您应该具有用于自定义应用程序的docker文件结构,并且还应位于some / dir / imagemagick /下的imagemagick文件结构中。这是所有ImageMagick的相对文件(还包括转换,魔术,库等)。 现在,如果要在代码中使用ImageMagick,则需要使用ImageMagick目录的“新”路径在Docker容器中设置一些ENV变量。示例:
IM4JAVA_TOOLPATH=/some/dir/imagemagick/usr/bin \
LD_LIBRARY_PATH=/usr/lib:/some/dir/imagemagick/usr/lib \
MAGICK_CONFIGURE_PATH=/some/dir/imagemagick/etc/ImageMagick-7 \
MAGICK_CODER_MODULE_PATH=/some/dir/imagemagick/usr/lib/ImageMagick-7.0.5/modules-Q16HDRI/coders \
MAGICK_HOME=/some/dir/imagemagick/usr
现在(用Java代码)删除ProcessStarter.setGlobalSearchPath(imPath);
此部分(如果已设置)。因此,您可以使用IM4JAVA_TOOLPATH。
现在ConvertCmd cmd = new ConvertCmd();
和cmd.run(op);
应该可以工作了。
也许这不是最好的方法,但是它为我工作,而我却在挣扎很多。 希望这可以帮助!
随时更正或添加其他信息。