Tôi có một chức năng bash nvm
quy định tại /root/.profile
. docker build
không thể tìm thấy chức năng đó khi tôi gọi nó trong bước RUN
.Làm thế nào để chạy chức năng bash trong Dockerfile
RUN apt-get install -y curl build-essential libssl-dev && \
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh
RUN nvm install 0.12 && \
nvm alias default 0.12 && \
nvm use 0.12
Lỗi này là
Step 5 : RUN nvm install 0.12
---> Running in b639c2bf60c0
/bin/sh: nvm: command not found
Tôi cố gắng gọi nvm
bằng cách gói nó với bash -ic
, mà sẽ được tải /root/.profile
.
RUN bash -ic "nvm install 0.12" && \
bash -ic "nvm alias default 0.12" && \
bash -ic "nvm use 0.12"
Các phương pháp trên hoạt động tốt, nhưng nó có một cảnh báo
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
Và tôi muốn biết là có một cách dễ dàng hơn và sạch hơn để gọi hàm bash trực tiếp vì nó là nhị phân bình thường mà không có sự bash -ic
gói? Có thể giống như
RUN load_functions && \
nvm install 0.12 && \
nvm alias default 0.12 && \
nvm use 0.12
'RUN bash -c 'nvm cài đặt 0.12 && nvm bí danh mặc định 0,12 && nvm 0.12'' sử dụng nên làm các trick. Nó làm việc cho bạn? (Tôi không chắc chắn 100% vì tôi không biết container của bạn trông như thế nào) – hek2mgl
Nó hoạt động tốt. Nhưng tôi đang tìm một giải pháp tốt hơn. – Quanlong
Ok, kiểm tra câu trả lời của tôi. Một kịch bản shell là cách sạch nhất để làm điều đó. – hek2mgl