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

复制exe并将其组合为docker映像,使其独立于平台,docker,dockerfile,Docker,Dockerfile,我需要创建一个Docker映像,当它运行时,应该在Docker文件中提到的指定目录中安装一个exe 基本上,我需要ImageMagick应用程序。创建的docker文件应该是独立于平台的,比如说,如果我在windows中运行,它应该使用windows发行版,Linux意味着Linux发行版。如果能在系统中添加一个环境变量,那就太好了。我浏览了解决方案,但找不到合适的解决方案。您可以使用docker mount或volumes将(提取文件)安装到外部主机系统- 但是,您无法通过从容器内部更新托管系

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

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

您可以使用docker mount或volumes将(提取文件)安装到外部主机系统-


但是,您无法通过从容器内部更新托管系统的环境变量来更改系统设置。

我知道时间有点晚,但可能有人(如我)仍在搜索

最后,我使用了一个java imagemagick docker版本

您可以运行
docker pull cpaitsupport/java imagemagick
将此docker映像发送到您的docker机器

现在是棘手的部分:因为我需要在docker容器中为我的主应用程序运行imagemagick。现在,您可以
将文件从cpaitsupport/java imagemagick复制到自定义容器中。例如:

COPY --from=cpaitsupport/java-imagemagick:latest . ./some/dir/imagemagick
现在,您应该拥有定制应用程序的docker文件结构,以及/dir/imagemagick/imagemagick的文件结构。以下是所有与ImageMagick相关的文件(也包括转换、magic、库等)。 现在,如果您想在代码中使用ImageMagick,您需要使用ImageMagick目录的“新”路径为docker容器设置一些环境变量。例如:

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_工具路径。 现在,ConvertCmd=newconvertcmd()
cmd.run(op)应该正在工作

也许这不是最好的方法,但对我来说很有效,我一直在努力。 希望这有帮助


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

到目前为止你做了什么?如前所述,这是非常广泛/模糊的。感谢您的回复。我是Docker world的新手,无法完全获得解决方案。让我探讨一下docker挂载和卷,同时你能为我的问题分享一些Dockerfile示例吗。这将非常有用。-v/path:/path/in/container装载主机目录,/path位于/path/in/container-v path:/path/in/container创建一个名为path的卷,与主机没有关系。谢谢。这真的很有帮助,除此之外,我还有一个问题。我使用了RUN[“yum”,“install”,“ImageMagick”]。我相信它会在我的容器中安装ImageMagick。现在我想在我的容器中设置一个env变量,这样我就可以从Java代码中使用它。我相信我们可以使用rpm-ql ImageMagick来获取安装目录。但是我们可以使用导出来设置变量吗?您可以有一个解决方案来解决您的需求。生成一个包含您想要的所有属性的文件,然后将其放入外部装载的文件系统中。然后,您可以使用JAVA读取该文件,为您的系统提供运行时环境变量。