2016-12-22 3 views
1

Ich möchte auditserver auf Nodejs Server installieren, also meine Auditserver mit rpm. es funktioniert gut als manuelle Schritte.Dockerfile Problem mit RPM

Ich schreibe eine Dockerfile wie unten.

FROM centos:centos6 

# Enable EPEL for Node.js 
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 

# Install Node.js and npm 
RUN yum install -y npm 

# ADD rpm into container 
ADD auditserver-1-1.x86_64.rpm /opt/ 

RUN mkdir -p /opt/auditserver 

RUN cd /opt 

RUN rpm -Uvh auditserver-1-1.x86_64.rpm 

# cd to auditserver 
RUN cd /opt/auditserver 

# Install app dependencies 
RUN npm install 
# start auditserver 
RUN node server 

EXPOSE 8080 

beim Erstellen der Docker-Datei sehe ich unten Problem.

[email protected]:/tmp/sky-test# docker build -t sky-test . 
Sending build context to Docker daemon 38.4 kB 
Step 1 : FROM centos:centos6 
---> 9c95139afb21 
Step 2 : RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 
---> Using cache 
---> fd5b1bb647fc 
Step 3 : RUN yum install -y npm 
---> Using cache 
---> b7c2908fc583 
Step 4 : ADD auditserver-1-1.x86_64.rpm /opt/ 
---> 26ace798f98c 
Removing intermediate container 5ea6221797f5 
Step 5 : RUN mkdir -p /opt/auditserver 
---> Running in 8f7292364245 
---> 9b340033f6b7 
Removing intermediate container 8f7292364245 
Step 6 : RUN cd /opt 
---> Running in c7d20fd251f3 
---> 0cdf90b6cb2e 
Removing intermediate container c7d20fd251f3 
Step 7 : RUN rpm -Uvh auditserver-1-1.x86_64.rpm 
---> Running in 4473241e5077 
error: open of auditserver-1-1.x86_64.rpm failed: No such file or directory 
The command '/bin/sh -c rpm -Uvh auditserver-1-1.x86_64.rpm' returned a non-zero code: 1 
[email protected]:/tmp/sky-test# 

Kann jede Hilfe zu diesem perfekten Dockerfile gemacht werden. Vielen Dank.

Antwort

0

Das Problem besteht darin, dass Sie nicht im Verzeichnis /opt sind, wenn Sie den Befehl rpm ausführen (Schritt 7). Siehe this answer, um herauszufinden, warum das passiert. Quote:

Jedes Mal, wenn Sie ausführen, spawnen Sie einen neuen Container und daher ist die PWD '/'.

Informationen zur Fehlerbehebung finden Sie unter this question. Fassen wir zusammen:

RUN cd /opt 
RUN rpm -Uvh auditserver-1-1.x86_64.rpm 

dazu: Sie diesen Teil der WORKDIR dockerfile Befehl oder ändern können

RUN cd /opt && rpm -Uvh auditserver-1-1.x86_64.rpm