J'ai dockerisé une application dans laquelle ffmpeg est installé via libav-tools. L'application se lance sans problème, mais le problème survient lorsque le module npm fluent-ffmpeg tente d'exécuter la commande ffmpeg, qui n'a pas été trouvée. Lorsque j'ai voulu vérifier la version de ffmpeg et de la distribution linux configurée dans l'image, j'ai utilisé la commande Sudo docker exec -it c44f29d30753 "lsb_release -a"
, mais elle a généré 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
Ensuite, j'ai réalisé que cela me donnait la même erreur avec toutes les commandes que j'essayais d'exécuter à l'intérieur de l'image ou du 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 voudrais bien demander votre aide. Merci beaucoup!
C’est ce qui m’est arrivé sous Windows ... Toutes ces commandes fonctionneront
Sur Windows CMD (ne pas basculer vers bash)
docker exec -it <container-id> /bin/sh
Sous Windows CMD (après passage à bash)
docker exec -it <container-id> //bin//sh
ou
winpty docker exec -it <container-id> //bin//sh
Sur Git Bash
winpty docker exec -it <container-id> //bin//sh
NB: Vous devrez peut-être utiliser /bin/bash
ou /bin/sh
, selon le shell dans votre conteneur.
La raison est documentée dans le fichier ReleaseNotes de Git et elle est bien expliquée ici - Bash dans Git pour Windows: Bizarre ...
"La raison est d'essayer de s'assurer que les chemins posix sont correctement transmis aux utilitaires git. Pour cette raison, Git pour Windows inclut une couche MSYS modifiée qui affecte les arguments de la commande."
Débarrassez-vous de vos citations autour de votre commande. Lorsque vous la citez, docker tente d'exécuter la chaîne complète "lsb_release -a"
en tant que commande, ce qui n'existe pas. Au lieu de cela, vous souhaitez exécuter la commande lsb_release
avec un argument -a
et sans guillemets.
Sudo docker exec -it c44f29d30753 lsb_release -a
Remarque: tout ce qui suit le nom du conteneur correspond à la commande et aux arguments à exécuter à l'intérieur du conteneur. Docker ne traitera aucune de ces options en tant qu'options de la commande docker.
J'ai eu cela en raison d'une simple erreur de commande de mon côté. J'ai appelé
[WRONG] docker run <image> <arguments> <command>
Quand j'aurais dû utiliser
docker run <arguments> <image> <command>
Même résolution pour une question similaire: https://stackoverflow.com/a/50762266/6278
@papigee devrait fonctionner correctement sous Windows 10. J'utilise le terminal VSCode intégré avec git bash et cela fonctionne toujours pour moi.
winpty docker exec -it <container-id> //bin//sh