2016-08-01 16 views
0

Regel in nginx komponiert ein drittes Teilmodul kompilieren Sie diesen Befehl verwenden sollen:Installieren nginx dynamische Modul mit Docker

./configure --add--module=path/to/your/new/module/directory 

Dann mit:

make 

Und schließlich:

make install 

Aber mit docker kann ich nicht in Nginx Pfad gehen und diese Befehle ausführen. Wie kann ich den Befehl "configure" zu meiner Datei "docker-compose.yml" hinzufügen?

EDIT: Ich habe versucht, eine einfache Dockerfile wie diese zu erstellen:

FROM nginx 
RUN ./configure --add-module=./module/ 
    make && \ 
    make install 

Und es in meine Docker-compose.yml einschließlich.

Und es gab mir diesen Fehler:

/bin/sh: 1: ./configure: not found The command '/bin/sh -c ./configure --add-module=./module/' returned a non-zero code: 127 

ich auch anstelle von „Configure“, aber dasselbe Ergebnis „konfiguriert“ hat versucht, zu verwenden. Ich weiß nicht, wie man den configure-Befehl setzt.

Antwort

1

Ich bin nicht sicher, ob ich die Frage richtig verstanden hat, aber ich denke, configure, make und make install getan werden sollten als Teil docker build den RUN Direktive (in Ihrem Dockerfile). docker-compose führt das resultierende Bild einfach aus (wahrscheinlich im Tandem mit anderen Docker-Images).

Probe Dockerfile (nicht überprüft, können Fehler enthalten!):

FROM centos:latest 
COPY nginx /root/nginx 
WORKDIR /root/nginx 
RUN ./configure && make && make install 
+0

Ja, Sie haben meine Frage verstanden. Du hast recht, ich sollte eine Docker-Datei für meinen Zweck verwenden und dann docker-compose nur zum Kombinieren verschiedener Bilder verwenden. Ich habe meine Frage mit Ihrem Rat aktualisiert, aber ich habe mein Problem noch nicht gelöst. – MaP

+2

'FROM nginx' wird beginnen, ein Basisbild zu erstellen, auf dem bereits' nginx' installiert ist. Es wird wahrscheinlich nicht den Nginx-Quellcode haben, der das Skript 'configure' und' Makefile' enthält. Der beste Weg wäre, von CentOS oder Ubuntu oder einem solchen Betriebssystemabbild zu starten, nginx-Quellcode darin zu kopieren/herunterzuladen und dann diese Befehle auszuführen. – Amit

+0

Sie haben die richtige Methode geschrieben: Zuerst begann ich von einem offiziellen OS-Image: Von Ubuntu: neuesten. Dann habe ich die Binärdateien von nginx heruntergeladen und extrahiert. Dann, vor dem Kompilieren, fügte ich mein Modul in "./configure" -Befehl. Es hat funktioniert. Vielen Dank! – MaP