Ausführbare Datei nicht in $PATH
Arbeite ich in einem Dockerfile für PHP-FPM 7.1. Ich bin Ende der Dockerfile mit der folgenden Zeile:
CMD ["php71-php-fpm"]
Weil ich bin mit docker-compose
dies ist, wie ich starten Sie den container:
docker-compose up -d
Den container kompiliert einwandfrei (scheinbar), die als pro diese Zeilen:
Successfully built 014e24455b53
WARNING: Image for service php was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating php71-fpm
Aber es endet mit der folgenden Fehlermeldung:
ERROR: for php Cannot start service php: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"php71-php-fpm\\\": executable file not found in $PATH\"\n"
ERROR: Encountered errors while bringing up the project.
Ich habe versucht, die folgenden:
CMD php71-php-fpm
Und die Fehler verschwinden aber dann ist der container die Ausfahrt mit dem code 127:
> docker-compose ps
Name Command State Ports
-------------------------------------------------------
php71-fpm /bin/sh -c php71-php-fpm Exit 127
Was ich hier vermisst?
UPDATE
Habe ich die folgende Antwort hier:
Wert 127 zurück /bin/sh, wenn der Befehl nicht gefunden wird
in Ihrer PATH-variable, und es ist nicht eine built-in shell
Befehl. In anderen Worten, das system nicht verstehen, dein Befehl,
weil Sie nicht wissen, wo Sie die binary ist, das Sie versuchen zu
nennen.
Macht mich denken, dass die Datei php71-paths.sh nicht ausgeführt, so dass die Pfade sind nicht setup korrekt ist.
Wieder einmal, was ich bin fehlt?
Diese php71-fpm
wird verbunden mit einem anderen Behälter, läuft Nginx (dies ist ein WIP und mein Weg, zu lernen, Docker)
Sind es hier die komplette Dockerfile für Sie, einen Blick zu nehmen.
InformationsquelleAutor ReynierPM | 2016-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie laufen in Probleme, weil die Standard-shell ausführen von Docker ist nicht eine login-shell nach diese Antwort, was bedeutet, dass Skripte, die in
/etc/profile.d/
nicht verarbeitet bekommen.Wenn Sie brauchen, Profilbearbeitung, versuchen Sie, Ihre Letzte Zeile zu
CMD ["/bin/sh", "-l", "-c", "php71-php-fpm"]
zum aufrufen einer login-shell.Sind Sie sicher, dass die ausführbare Datei existiert auf dem Bild? Dabei
find / -name php71-php-fpm1
auf deinem Bild findet nur einen Eintrag in/etc/logrotate.d
**Hinweis ** ich habe ursprünglich vergessen, die
-c
in meiner Antwort. Tut mir Leid, dass. Aber mit den Bild mitCMD ["env"]
vs.CMD ["/bin/sh", "-l", "-c", "env"]
wird das entsprechende php-dirs in deinePATH
Dies ist die Datei php71-paths.sh , fügen Sie die Pfade, vielleicht ist die nicht ausgeführt werden können, auf container starten, können Sie einen Blick auf die Dockerfile und lassen Sie mich wissen, ist, dass ist das problem und was ist die Lösung in diesem Fall?
Ich glaube, dass die container-sourcing ist die
php71-paths.sh
- Datei, wenn ausgeführt, mit/bin/sh -l -c ...
wie gezeigt, durch den Druck der Umwelt-Variablen im container mitenv
wenn es läuft (PATH
enthält Verweise aufphp
Verzeichnisse). Aber meine Sorge ist, dass die ausführbare Datei mit dem Namenphp71-php-fpm
es eigentlich nicht gibt auf dem Bild. Wie bereits erwähnt, ich war nicht in der Lage, es überall zu finden in der container-Dateisystem, wenn es ausgeführt wurde. Ist das eigentlich der Befehl, der ausgeführt werden muss um zu starten php? Sorry, ich kann nicht testen Sie Ihr Bild im moment.InformationsquelleAutor shiv