2017-12-28 135 views
5

Tôi đã dockerized một ứng dụng có ffmpeg được cài đặt trong nó thông qua các công cụ libav.Ứng dụng khởi chạy mà không có vấn đề, nhưng vấn đề xảy ra khi mô-đun fluent-ffmpeg npm cố gắng thực thi lệnh ffmpeg, không tìm thấy khi tôi muốn kiểm tra phiên bản của ffmpeg và bản phân phối linux được thiết lập trong hình ảnh, tôi đã sử dụng lệnh sudo docker exec -it c44f29d30753 "lsb_release -a", nhưng nó đã đưa ra lỗi sau : 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

Sau đó, tôi nhận ra rằng nó mang lại cho tôi những lỗi tương tự với tất cả các lệnh mà chúng tôi cố gắng chạy bên trong hình ảnh hoặc container

OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"ffmpeg -a\": executable file not found in $PATH": unknown 
.

Đây là Dockerfile của tôi:

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"] 

Tôi rất mong nhận được sự giúp đỡ của bạn. Cảm ơn nhiều!

+0

thử nhập vùng chứa của bạn bằng 'docker run --rm -ti your-image-name sh' và tìm tệp thực thi của bạn. Nó có lẽ chỉ là một vấn đề PATH (thư mục nơi thực thi của bạn được đặt trong không phải là PATH của trình gỡ lỗi gốc bên trong vùng chứa) – whites11

+0

Tôi đã nhập vùng chứa với lệnh mà bạn đã đề xuất. Vấn đề là khi tôi cố gắng làm 'apt-get install ffmpeg', kết quả là:' Gói ffmpeg không có sẵn, nhưng được nhắc đến bởi một gói khác. Điều này có nghĩa là gói bị thiếu, đã lỗi thời hoặc chỉ khả dụng từ một nguồn khác E: Gói 'ffmpeg' không có ứng cử viên cài đặt'. Tuy nhiên tôi có thể nhận được cùng một gói trong hệ điều hành ubuntu 16.04 của tôi. Có thể đã xảy ra sự cố với hệ điều hành trong vùng chứa? –

+0

bạn có chạy 'apt-get update' không? – whites11

Trả lời

-1

Điều này đã xảy ra với tôi trên cửa sổ. tôi chỉ đơn giản chạy lệnh

docker exec -it <container-id> /bin/sh

trên Windows cmd (không chuyển sang bash); đã làm việc cho tôi.

1

Loại bỏ dấu ngoặc kép của bạn xung quanh lệnh của bạn. Khi bạn báo giá, docker cố gắng chạy chuỗi đầy đủ "lsb_release -a" làm lệnh không tồn tại. Thay vào đó, bạn muốn chạy lệnh lsb_release với đối số -a và không có dấu ngoặc kép.

sudo docker exec -it c44f29d30753 lsb_release -a 

Lưu ý, mọi thứ sau tên vùng chứa là lệnh và đối số để chạy bên trong vùng chứa, docker sẽ không xử lý bất kỳ lệnh nào làm tùy chọn cho lệnh docker.

Các vấn đề liên quan