linux - 在 Dockerfile 中安装软件并设置环境变量

标签 linux docker dockerfile

我有一个 jar 文件,我需要用它来创建 docker 镜像。我的 jar 文件依赖于一个名为 ImageMagick 的应用程序。基本上,将安装 ImageMagick 并将图像 magick 的路径添加为环境变量。我是 Docker 的新手,根据我的理解,我认为容器只能访问容器内的资源。

所以我创建了一个 docker 文件,就这样

FROM openjdk:8
ADD target/eureka-server-1.0.0-RELEASE.jar eureka-server- 
1.0.0-RELEASE.jar
EXPOSE 9991
RUN ["yum","install","ImageMagick"]
RUN ["export","imagemagix_home", "whereis ImageMagick"](Here is what am 
struggling that, i need to set env variable by taking the installation 
directory of imagemagick. Currently iam getting null)
ENTRYPOINT ["java","-jar","eureka-server-1.0.0-RELEASE.jar"]

请告诉我,我尝试的解决方案是否合适,或者是否有更好的解决方案来解决我的问题。

更新,

在安装应用程序并在构建时设置 env 变量时,在 -e 运行时传递参数是没有用的。我已经更新了我的 docker 文件,如下所示,

FROM openjdk:8
ADD target/eureka-server-1.0.0-RELEASE.jar eureka-server- 
1.0.0-RELEASE.jar
EXPOSE 9991
RUN ["yum","install","ImageMagick"]
ENV imagemagix_home = $(whereis ImageMagick)
RUN ["wget","https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-64bit- 
static.tar.xz"]
RUN ["tar","xvf","ffmpeg-git-*.tar.xz"]
RUN ["cd","./ffmpeg-git-*"]
RUN ["cp","ff*","qt-faststart","/usr/local/bin/"]
ENV ffmpeg_home = $(whereis ffmpeg)
ENTRYPOINT ["java","-jar","eureka-server-1.0.0-RELEASE.jar"]

在构建时,我收到一个错误,

OCI 运行时创建失败:conatiner_linux.go:启动容器进程导致“exec”:“\yum”:在 $PATH 中找不到可执行文件:未知。

更新

yum 在我的基础镜像包中不可用,所以我将 yum 更改为 apt-get,如下所示,

 RUN apt-get install build-essential checkinstall && apt-get build-dep 
 imagemagick -y

现在我正在获取未找到构建必需的包,请检查安装。回 非零代码 100 请让我知道出了什么问题

最佳答案

似乎 build-essential 或 checkinstall 不可用。尝试将它们安装在单独的命令中。或者寻找他们。 在安装它们之前,您可能需要执行 apt-et update 来刷新存储库缓存。

关于linux - 在 Dockerfile 中安装软件并设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49862229/

相关文章:

docker - 如何在 docker 图像中包含声纳扫描仪

docker - 为什么在容器外部无法访问在Compute Engine中运行的Docker实例?

docker - 强制 Jenkins 管道作业从 Dockerhub 中提取新的私有(private)镜像

docker - 如何在 Linux 上以非 root 身份在 Docker 中运行 .NET Core 2 应用程序

linux - 添加 init.d 服务(shell 中的 chkconfig/autocomplete)

java - 使用与项目其余部分不同位置的 Java 文件

linux - 如何在shell脚本中调用./etc/bash_completion?

linux - CentOS 6 中删除文件夹/var/lib/* 时如何修复

docker - 如何在 docker-compose.yml 文件中设置持久数据

postgresql - Docker postgres 不会从构建开始