Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 在预构建的节点映像中安装RPM包_Docker_Dockerfile_Rpm - Fatal编程技术网

Docker 在预构建的节点映像中安装RPM包

Docker 在预构建的节点映像中安装RPM包,docker,dockerfile,rpm,Docker,Dockerfile,Rpm,我正在编写一个节点应用程序,我想使用预先构建的节点映像()进行容器化。我需要部署我只有一个RPM包的应用程序,我不知道从哪里开始查找文档或一个小示例来完成这项工作 我所看到的示例使用的是yum,而我(据我所知)在预构建的节点映像中没有 COPY src/MyApp/lib/3rdPartyApp.x86_64.rpm ./3rdPartyApp.x86_64.rpm RUN yum localinstall 3rdPartyApp.x86_64.rpm; yum clean all &

我正在编写一个节点应用程序,我想使用预先构建的节点映像()进行容器化。我需要部署我只有一个RPM包的应用程序,我不知道从哪里开始查找文档或一个小示例来完成这项工作

我所看到的示例使用的是yum,而我(据我所知)在预构建的节点映像中没有

COPY src/MyApp/lib/3rdPartyApp.x86_64.rpm ./3rdPartyApp.x86_64.rpm

RUN yum localinstall 3rdPartyApp.x86_64.rpm; yum clean all && \
    rm ./3rdPartyApp.x86_64.rpm
我的另一个选择是使用具有yum的CentOS docker映像。但我在尝试使用NVM时遇到了在那里安装节点的问题。但我也在阅读,在构建Docker容器时,我不应该尝试使用NVM,还有更好的方法。

您可以使用它将包从一种格式转换为另一种格式

FROM centos:centos7.6.1810

# Enable EPEL to install Node.js and npm

RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm && \

    yum -y update && \

    yum install -y npm git && \

    yum clean all
FROM node

RUN apt-get update && apt-get install -y alien
COPY src/MyApp/lib/3rdPartyApp.x86_64.rpm ./3rdPartyApp.x86_64.rpm
RUN alien -d -i 3rdPartyApp.x86_64.rpm
这将在图像中留下大量额外文件。您可以使用两步构建来清除它

FROM node AS builder

RUN apt-get update && apt-get install -y alien
COPY src/MyApp/lib/3rdPartyApp.x86_64.rpm ./3rdPartyApp.x86_64.rpm
RUN alien -d 3rdPartyApp.x86_64.rpm

FROM node

COPY --from=builder 3rdPartyApp.x86_64.deb .
RUN dpkg -i 3rdPartyApp.x86_64.deb && rm 3rdPartyApp.x86_64.deb
可以使用将包从一种格式转换为另一种格式

FROM node

RUN apt-get update && apt-get install -y alien
COPY src/MyApp/lib/3rdPartyApp.x86_64.rpm ./3rdPartyApp.x86_64.rpm
RUN alien -d -i 3rdPartyApp.x86_64.rpm
这将在图像中留下大量额外文件。您可以使用两步构建来清除它

FROM node AS builder

RUN apt-get update && apt-get install -y alien
COPY src/MyApp/lib/3rdPartyApp.x86_64.rpm ./3rdPartyApp.x86_64.rpm
RUN alien -d 3rdPartyApp.x86_64.rpm

FROM node

COPY --from=builder 3rdPartyApp.x86_64.deb .
RUN dpkg -i 3rdPartyApp.x86_64.deb && rm 3rdPartyApp.x86_64.deb

找到了一种方法来完成我想做的事情,并把它作为一个答案。从CentOS映像开始(我将使用yum并可以安装my.rpm),然后使用EPEL安装npm。仍然不确定如何在预构建的节点映像上安装.rpm,除非有人有答案,否则将安装。找到了一种方法来完成我尝试的操作,并将其添加为答案。从CentOS映像开始(我将使用yum并可以安装my.rpm),然后使用EPEL安装npm。仍然不确定如何在预构建的节点映像上安装.rpm,除非有人给出答案。我最终为第三方应用程序找到了一个deb,但在找到deb之前,我验证了这一点。我认为这是一个更好的解决方案,比我的人在相同的情况下,因为你的最终图像已较少安装到它。我最终找到了一个第三方应用程序的deb,但我验证了这一工作之前,我找到了deb。我认为这是一个更好的解决方案,比我的人在相同的情况下,你的最终形象已较少安装到它。