Tôi muốn sử dụng một Dockerfile để xây dựng một hình ảnh. Tuy nhiên, lệnh sẽ cần đầu vào của người dùng khi chúng chạy. Hiện tại, quá trình xây dựng không thành công vì trình docker thoát khỏi đầu vào của người dùng. Tôi biết tôi có thể sử dụng tùy chọn -i -t trên lệnh docker run nhưng tôi muốn làm điều đó trên một Dockerfile. Làm thế nào là có thể?docker tương tác được xây dựng từ dockerfile?
Trả lời
Bạn có thể thử với expect hoặc một công cụ tương tự.
Cách dễ nhất để định cấu hình nó là sử dụng công cụ autoexpect
, cho phép bạn chạy các lệnh tương tác và tạo tập lệnh mong đợi cho bạn.
Tôi không thể nhận được các công cụ rvmsudo làm việc (tôi đã không sử dụng nó và không muốn dành quá nhiều thời gian với nó) vì vậy tôi quyết định sử dụng vi
thay thế. Đầu tiên chạy autoexpect
$ autoexpect vi test
này sẽ mở vi
và bạn có thể tạo hoặc chỉnh sửa các tập tin và lưu nó. Sau khi thoát khỏi số vi
, bạn sẽ thấy tệp của mình test
cũng như tập lệnh mong đợi script.exp
.
Sau đó, bạn có thể xóa tệp thử nghiệm và thực hiện script.exp
. Nó sẽ tạo lại cùng một tệp bằng các bước tương tự.
Công cụ tự động dò tìm là rất tốt, nhưng bạn có thể phải tạo tập lệnh từ đầu nếu bạn cần kiểm soát nhiều hơn những gì xảy ra. Ví dụ. nếu bạn không muốn tập lệnh hoạt động với đầu vào được mong đợi chính xác.
Gotta yêu downvoters, những người không bình luận về những gì sai với anh ta trả lời. Chúc mừng bạn! – ivant
- 1. Lệnh tương tác trong Dockerfile
- 2. Dockerfile qua môi trường trên Docker soạn xây dựng
- 3. không thể xây dựng một Dockerfile cụ
- 4. Xây dựng nhiều hình ảnh từ nhiều dockerfile
- 5. Chạy thử nghiệm Jenkins trong vùng chứa Docker xây dựng từ dockerfile trong codebase
- 6. Docker: Dockerfile vs Docker-compose.yml
- 7. Dockerfile vs Docker-soạn VOLUME
- 8. Hình ảnh Dockerfile vs Docker
- 9. Docker - Xây dựng Arg trong Tệp nguồn
- 10. Có thể trích xuất Dockerfile từ một hộp chứa docker
- 11. Docker xây dựng với tùy chọn -f không thể tìm thấy Dockerfile
- 12. Docker với php được xây dựng trong máy chủ
- 13. Docker xây dựng với Dockerfile, nhưng hình ảnh không có tên hoặc thẻ
- 14. InsecurePlatformWarning khi xây dựng hình ảnh Docker
- 15. xây dựng lại hình ảnh docker từ bước cụ thể
- 16. Docker xây dựng không có mạng, nhưng Docker chạy có
- 17. Có thể xây dựng một vỏ C tương tác không?
- 18. Thiết lập args xây dựng cho tác nhân dockerfile bằng cách sử dụng đường dẫn khai báo Jenkins
- 19. Xây dựng phụ thuộc chung với Docker-soạn
- 20. maven docker gói: xây dựng - kết nối từ chối
- 21. Docker xây dựng: read-only tập tin hệ thống
- 22. Docker Xây dựng không thể tìm thấy pip
- 23. Lỗi: "lỗi khi tạo aufs gắn kết để" khi xây dựng dockerfile
- 24. Dockerfile HOSTNAME Hướng dẫn cho docker build như docker run -h
- 25. Chuyển một biến đến một Dockerfile từ tệp docker-compose.yml
- 26. Viết để Docker khối lượng từ Dockerfile không hoạt động
- 27. xây dựng bối cảnh cho hình ảnh docker rất lớn
- 28. docker-compose cho ERROR: Không thể xác định vị trí Dockerfile được chỉ định: Dockerfile
- 29. Truy cập Bí mật/Tệp Riêng tư cần thiết để xây dựng trong Dockerfile?
- 30. Docker không tìm thấy khi xây dựng hình ảnh docker bằng cách sử dụng đường ống chứa Docker Jenkins
Nó phụ thuộc vào những gì userinput, nếu đó là userinput cho apt-get update là ví dụ, sau đó bạn có thể thêm -y để luôn luôn nói có. Nếu không, chạy một cái gì đó mà có userinput, lưu nó trong một biến môi trường và sau đó kéo nó từ các biến môi trường. –
Tôi đang chạy 'rvmsudo passenger-install-nginx-module'. Tôi không chắc chắn đề nghị của bạn áp dụng ở đây. – Keeto
Trong trường hợp đó tôi sẽ xây dựng một hình ảnh cơ sở với các mô-đun đã được cài đặt (nhập thủ công các dữ liệu cần thiết), sau đó tạo Dockerfiles bằng cách sử dụng hình ảnh mới đó. Tôi tò mò muốn xem nếu có một cách chung chung để giải quyết nó nếu kịch bản bạn đang chạy không hỗ trợ thiết lập không cần giám sát ... –