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

时间:2019-04-02 22:00:57

标签: docker dockerfile rpm

我正在编写要使用预先构建的节点映像(https://hub.docker.com/_/node/)进行容器化的Node应用程序。我需要部署仅具有RPM软件包的应用程序,但无法弄清楚从哪里开始寻找文档或一个小示例来完成此任务。

我正在查看的示例使用yum,根据我的理解,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的地方安装Node的问题。但是我也读到我在构建Docker容器时不应该尝试使用NVM,并且有更好的方法。

2 个答案:

答案 0 :(得分:1)

您可以使用alien将软件包从一种格式转换为另一种格式。

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

答案 1 :(得分:0)

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