复制exe并将其组合为docker镜像并使其独立于平台

时间:2018-04-16 11:10:52

标签: docker dockerfile

我需要创建一个Docker镜像,在运行时,应该在我的docker文件中提到的指定目录中安装一个exe。

基本上,我需要ImageMagick应用程序。创建的docker文件应该是独立于平台的,如果我在Windows中运行它应该使用Windows发行版,Linux意味着Linux发行版。如果它在系统中添加环境变量会很棒。我浏览了解决方案,但找不到合适的解决方案。

2 个答案:

答案 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);应该可以工作了。

也许这不是最好的方法,但是它为我工作,而我却在挣扎很多。 希望这可以帮助!

随时更正或添加其他信息。