Docker 在预构建的节点映像中安装RPM包
我正在编写一个节点应用程序,我想使用预先构建的节点映像()进行容器化。我需要部署我只有一个RPM包的应用程序,我不知道从哪里开始查找文档或一个小示例来完成这项工作 我所看到的示例使用的是yum,而我(据我所知)在预构建的节点映像中没有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 &
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。我认为这是一个更好的解决方案,比我的人在相同的情况下,你的最终形象已较少安装到它。