Установите пакет RPM в предварительно собранный образ узла - PullRequest
0 голосов
/ 03 апреля 2019

Я пишу приложение Node, которое я хочу создать в контейнере, используя предварительно созданный образ узла (https://hub.docker.com/_/node/).) Мне нужно развернуть приложение, для которого у меня есть только пакет 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

Другой вариант - использовать образ док-станции CentOS с yum. Но я сталкиваюсь с проблемами при установке Node там, пытаясь использовать NVM. Но я также читаю, что не следует пытаться использовать NVM при созданииDocker контейнер и есть лучший способ.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вы можете использовать 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
0 голосов
/ 03 апреля 2019
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
...