J'ai dockerisé une application dans laquelle ffmpeg est installé via libav-tools. L'application se lance sans problème, mais le problème est survenu lorsque le module npm fluent-ffmpeg a essayé d'exécuter la commande ffmpeg, qui n'a pas été trouvée. Lorsque j'ai voulu vérifier la version de ffmpeg et la distro linux installée dans l'image, j'ai utilisé sudo docker exec -it c44f29d30753 "lsb_release -a"
mais elle a donné l'erreur suivante : OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"lsb_release -a\": executable file not found in $PATH": unknown
Puis je me suis rendu compte qu'il me donne la même erreur avec toutes les commandes que j'essaie d'exécuter dans l'image ou le conteneur.
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"ffmpeg -a\": executable file not found in $PATH": unknown
C'est mon Dockerfile :
FROM ubuntu:xenial
FROM node
RUN apt-get -y update
RUN apt-get --yes install libav-tools
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
RUN npm run build
ENV NODE_ENV production
EXPOSE 8000
CMD ["npm", "run", "start:prod"]
Je vous demande de bien vouloir m'aider. Merci beaucoup !
5 votes
Essayez d'entrer dans votre conteneur avec
docker run --rm -ti your-image-name sh
et trouvez votre exécutable. Il ne s'agit probablement que d'un problème de PATH (le répertoire dans lequel se trouve votre exécutable n'est pas dans le PATH de l'unité racine du conteneur).0 votes
J'ai entré le conteneur avec la commande que vous avez recommandée. Le problème est que lorsque j'essaie de faire
apt-get install ffmpeg
le résultat est :Package ffmpeg is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'ffmpeg' has no installation candidate
. Cependant, je peux obtenir le même paquet dans mon système d'exploitation ubuntu 16.04. Y a-t-il un problème avec le système d'exploitation dans le conteneur ?0 votes
Avez-vous couru
apt-get update
?0 votes
J'ai couru
apt-get -y update && apt-get -y upgrade
et à l'intérieur du conteneur lorsque j'essaie d'exécuterlsb_release -a
cette fois-ci, la sortie estsh: 4: lsb_release: not found
Même chose pour ffmpeg :sh: 5: ffmpeg: not found
. Je coursapt-get install libav-tools
et obtenir# apt-get install libav-tools Reading package lists... Done Building dependency tree Reading state information... Done libav-tools is already the newest version.
. Si jefind -name "ffmpeg"
est vide.0 votes
@whites11 Je crois que vous avez raison, il semble que ce soit un problème de PATH, parce qu'à l'intérieur du conteneur, tout ce que je
apt-get install
yapt-get update
Il est installé dans le conteneur, mais après tout, je ne peux pas exécuter la commande. La même chose s'est produite pourapt-get install lsb-release
Il a été installé et ne peut toujours pas exécuter la commande après l'installation :sh: 3: lsb-release: not found
. Pourriez-vous me donner des informations un peu plus détaillées sur la façon dont je peux résoudre le problème PATH ?1 votes
Tout d'abord, vous devez trouver le chemin absolu de votre exécutable (en utilisant find, peut-être). Ensuite, vous avez 2 options : 1) utiliser le chemin complet de l'exécutable dans le CMD de votre docker (et en général partout où vous appelez un exécutable) 2) ajouter le répertoire qui contient votre binaire à la fin de la variable d'environnement PATH, comme :
export PATH=$PATH:/my/bin/folder
0 votes
Laissez-nous continuer cette discussion dans le chat .
0 votes
Voir aussi stackoverflow.com/q/27158840/798677