Tôi không chắc liệu mình có nên tạo một cái khác cho ứng dụng Node.js của mình không Tệp Docker
tài liệu. Một dành cho sản xuất không có phần phụ thuộc phát triển và một dành cho thử nghiệm có phần phụ thuộc phát triển.
Hoặc một cái về cơ bản phát triểnDockerfile.dev
tài liệu. Vì vậy, sự khác biệt chính giữa hai tệp này là lệnh npm install:
Sản xuất:
TỪ ...
...
CHẠY npm install --quiet --production
...
Lệnh ...
Phát triển/Thử nghiệm:
TỪ ...
...
CHẠY cài đặt npm
...
Lệnh ...
Vấn đề phát sinh vì tôi muốn có thể vượt qua chạy docker
lệnh chạy thử nghiệm của tôi bên trong vùng chứa. Vì vậy tôi cần các phụ thuộc kiểm tra (thường là các phụ thuộc phát triển của tôi).
Có vẻ hơi lạ khi đặt những phần phụ thuộc không cần thiết trong quá trình sản xuất vào một hình ảnh. Mặt khác, việc tạo/duy trì Dockerfile.dev thứ hai chỉ với những khác biệt nhỏ có vẻ cũng không đúng. Vì vậy, các thực hành tốt cho loại vấn đề này là gì?
Không, bạn không cần phải có sự khác biệt Tệp Docker
, điều mà bạn thực sự nên tránh.
Mục tiêu của Docker là xuất bản ứng dụng của bạn dưới dạng bất biến, được kiểm tra kỹ lưỡng (hình ảnh Docker), giống nhau cho quá trình sản xuất, thử nghiệm và thậm chí là phát triển.
Tại sao? Bởi vì nếu bạn xây dựng các sản phẩm khác nhau để thử nghiệm và sản xuất, làm thế nào bạn có thể đảm bảo rằng thứ bạn đã thử nghiệm cũng sẽ hoạt động trong sản xuất? Bạn không thể, vì chúng là hai thứ khác nhau.
Xem xét tất cả những điều này, nếu thử nghiệm đề cập đến đơn vị
test, bạn có thể cài đặt mã nguồn trong vùng chứa docker và chạy thử nghiệm mà không cần xây dựng bất kỳ hình ảnh docker nào. Điều này tốt. Hãy nhớ rằng bạn có thể xây dựng hình ảnh để thử nghiệm, nhưng điều này rất chậm và khiến việc phát triển trở nên khó khăn và chậm chạp, điều này không tốt chút nào. Sau đó, nếu thử nghiệm của bạn vượt qua, bạn có thể xây dựng vùng chứa ứng dụng của mình một cách an toàn.
Tuy nhiên, nếu ý bạn là các thử nghiệm chấp nhận thực sự cần chạy trên ứng dụng đang chạy của bạn thì bạn nên tạo một hình ảnh (chỉ một) ứng dụng của mình và chạy thử nghiệm trong một vùng chứa khác (ví dụ: gắn mã nguồn thử nghiệm) và chạy một kiểm tra vùng chứa đối với ứng dụng. Điều này rõ ràng có nghĩa là ứng dụng của bạn được xây dựng cho npm
Việc cài đặt cho thử nghiệm của bạn là khác nhau.
Tôi hy vọng điều này cung cấp cho bạn một số cái nhìn sâu sắc.
Về docker - các phần phụ thuộc phát triển trong Dockerfile hoặc các Dockerfile riêng biệt để sản xuất và thử nghiệm, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/34396759/
Tôi là một lập trình viên xuất sắc, rất giỏi!