2015-03-27 22 views
5

Tôi đang di chuyển một ứng dụng đường ray hiện có sang docker và docker-compose. Có một vài kịch bản chỉ cần chạy khi tạo các thùng chứa, ví dụ một tập lệnh sao chép db sản xuất vào một ổ đĩa và lập chỉ mục nó trong Elasticsearch.Docker-Compose: Khởi tạo và chạy

Từ đó trở đi, khi tôi bắt đầu vùng chứa để phát triển, tôi chỉ muốn chạy máy chủ phát triển đường ray chứ không phải tất cả các tập lệnh init db. Tôi có thể tạo hai tệp bản sao docker (ví dụ: initrun) giống nhau trừ tùy chọn command: trên vùng chứa webapp.

Có cách nào tốt hơn không?

Trả lời

2

Hệ thống Docker cơ sở không có khái niệm "chạy" cho tập lệnh tùy chỉnh.

Những gì bạn có thể làm là một trong những cách tiếp cận:

  • Thêm vào kịch bản của bạn một tấm séc của nếu nó đã đã làm điều đó. Sau đó, nó không quan trọng nếu bạn chạy lại nó một lần nữa và một lần nữa.
  • Tích hợp db vào docker và gửi nó như đã được thực hiện với dữ liệu được tải.
  • Tạo hệ thống docker 2 phần: Cái đầu tiên sẽ là docker mà bạn biết bây giờ với lệnh "ONBUILD" có thể, vì vậy lệnh thứ hai sẽ chạy tập lệnh. Sau đó, docker thứ hai là một trong những người hít phải bản gốc và sẽ chạy kịch bản có hoặc không có "ONBUILD" ở trên. Trong docker-compose bạn sẽ có một build cục bộ sẽ kích hoạt việc import trong khi tạo image docker cục bộ.

Chỉ cần một ý tưởng

0

Bạn có thể sử dụng extends trong soạn của bạn * file .yml.

Extend documentation and examples.

+0

"Khi bạn mở rộng dịch vụ, liên kết và các tùy chọn cấu hình volumes_from không được thừa kế -. Bạn sẽ phải xác định những bằng tay mỗi khi bạn mở rộng nó" Vẫn còn tốt hơn là tạo một tập tin toàn bộ docker-compose mới, nhưng không phải là khô như nó có thể được. Tôi thực sự chỉ muốn một hoặc hai dòng khác nhau giữa hai tệp docker-compose, do đó, phần mở rộng docker-compose cũng chỉ nên có một hoặc hai dòng. – cyniphile

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