Tôi đang xây dựng một hình ảnh docker trên Raspberry Pi của tôi, tất nhiên mất một thời gian. Vấn đề ở đây là ngay cả các lệnh rất đơn giản trong Dockerfile như thiết lập một biến môi trường, sử dụng chmod +x
trên một tập tin duy nhất hoặc phơi bày cổng 80 mất vài phút để hoàn thành.docker build rất chậm ngay cả với các lệnh đơn giản
Dưới đây là một đoạn trích của Dockerfile tôi:
FROM resin/rpi-raspbian
MAINTAINER felixbr <[email protected]>
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y python python-dev python-pip python-numpy python-scipy python-mysqldb mysql-server redis-server nginx dos2unix poppler-utils
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt
COPY . /app
WORKDIR /app
RUN cp /app/nginx-django.cfg /etc/nginx/sites-enabled/default
RUN chmod +x /app/start.sh
ENV DOCKERIZED="true"
CMD ./start.sh
EXPOSE 80
Hãy ghi nhớ này là sử dụng một hình ảnh ARMv6
cơ sở, vì vậy nó có thể chạy trên một Pi mâm xôi và tôi đang sử dụng Docker 1.5.0 xây dựng cho hypriot Raspberry Pi OS.
Có phải sao chép các lớp được xây dựng cho mọi lệnh hoặc tại sao mỗi lệnh cuối cùng mất vài phút để hoàn thành?
Không sẽ giúp rất nhiều, nhưng bạn có thể kết hợp tất cả các lệnh RUN của bạn vào một dòng, sẽ hiệu quả hơn một chút. –
Tôi nghĩ về điều này và nó chắc chắn sẽ cải thiện hiệu suất tổng thể. Tuy nhiên, tôi không giải quyết được vấn đề với ENV, EXPOSE, WORKDIR, v.v., cũng không kém phần quan trọng. – felixbr
Bạn có các tệp không cần thiết trong thư mục không? Giống như '.git' vì nó là kho lưu trữ git. Thêm nó và bất kỳ thứ gì khác vào '.dockerignore' và bạn có thể nhận thấy tốc độ tăng lên. –