Tôi đang làm việc trên một dịch vụ trong một hệ thống được sắp xếp bằng cách sử dụng docker-compose. Dịch vụ được viết bằng một ngôn ngữ được biên dịch và tôi cần phải xây dựng lại nó khi tôi thực hiện một thay đổi. Tôi đang cố gắng tìm cách tốt nhất để nhanh chóng lặp lại các thay đổi.Luồng công việc phát triển Docker cho các thành phần được biên dịch trong thiết lập docker-compose
Tôi đã thử 2 'quy trình công việc', cả hai đều dựa vào việc được liên kết với thư mục nguồn qua số volume:
để nhận nguồn mới nhất.
- Mang lên tất cả các container hỗ trợ với
docker-compose up -d
- Dừng container cho các dịch vụ được phát triển
- Chạy container mới bằng cách sử dụng hình ảnh
docker-compose run --name SERVICE --rm SERVICE /bin/bash
- Trong đó chạy chứa biên dịch và chạy ứng dụng tại cổng tiếp xúc.
- Khởi động lại bằng cách dừng quá trình chạy và sau đó xây dựng lại.
- (yêu cầu Dockerfile
CMD
để xây dựng và sau đó chạy dịch vụ) - Dừng dịch vụ:
docker-compose kill SERVICE
- Khởi động lại dịch vụ
docker-compose up -d --no-deps SERVICE
Vấn đề là cả mất quá nhiều thời gian để khởi động lại và khởi động lại dịch vụ cục bộ (chạy trên máy tính xách tay của tôi một cách độc lập o f docker). Cài đặt này có vẻ ổn với các ngôn ngữ thông dịch có thể tải lại các tệp đã thay đổi nhưng tôi chưa tìm được hệ thống dịch vụ ngôn ngữ phù hợp nhanh.
Docker có đang chạy trên máy tính xách tay của bạn hay từ xa không? Tự hỏi ý của bạn là "so với khởi động lại dịch vụ cục bộ". Điều gì khiến nó mất quá nhiều thời gian để khởi động lại? Đang biên soạn chậm hơn? Bắt đầu? – thaJeztah
Tôi đã cố gắng làm cho điều này rõ ràng hơn trong câu hỏi. Docker đang chạy qua docker-machine. Khi tôi nói 'chạy cục bộ', tôi có nghĩa là xây dựng và chạy dịch vụ mà không cần sử dụng docker. Đây là một tùy chọn nhưng nó có nghĩa là tôi cần phải thay đổi những thứ như URL cơ sở dữ liệu, v.v. –
Ah, đúng vậy, dự đoán tốt nhất của tôi ở đây là, trước hết, chia sẻ tệp giữa máy chủ và VM ảo là (để nói độc đáo) không giỏi lắm; đây là một hạn chế của việc chia sẻ tệp VirtualBox. Thứ hai, VM có thể không được điều chỉnh cho hiệu suất tối đa, có thể tạo ra sự khác biệt về thời gian biên dịch. Bạn đã thử, ví dụ: tăng số lượng bộ nhớ và/hoặc số CPU cho VM? – thaJeztah