2016-09-21 37 views
11

Tôi hoàn toàn có thể cấu hình khởi động mùa xuân trong cả hai trường hợp, câu hỏi ở đây là chúng mạnh mẽ hơn và được khuyến khích nhiều hơn, bởi vì tôi đã không tìm trong tài liệu khởi động mùa xuân theo cách được khuyến nghị để triển khai trong môi trường sản xuất, những lo ngại của tôi về việc sử dụng vùng chứa được nhúng là:Spring boot container nhúng hoặc tập tin chiến tranh trong một container bên ngoài để sản xuất

  1. Nếu tôi muốn đặt nó làm cửa sổ hoặc dịch vụ linux, là tệp jar lựa chọn tốt nhất?
  2. Nếu tôi sử dụng tệp jar, tôi sẽ không có quyền truy cập để khởi động lại máy chủ.
  3. Có thể trong tương lai tôi cần nhiều ứng dụng hơn trong cùng một vùng chứa.
  4. Nếu tôi khởi động lại máy, tôi phải thực thi lại java -jar.

Câu hỏi nói chung là sử dụng tốt hơn tệp jar và thực thi nó như java -jar jarname.jar trong sản xuất hoặc thay đổi bao bì thành chiến tranh đặt tomcat như được cung cấp và đặt chiến tranh được tạo ra trong một tomcat trống .

Tôi hy vọng bạn có thể giúp tôi.

--- CHỈNH SỬA ---

Nhiều lần câu trả lời phụ thuộc, đây là ứng dụng web bình thường hoặc dịch vụ web còn lại.

+0

tôi đã có cùng một câu hỏi, và tôi nghĩ rằng nó tốt hơn để có nó chạy trên một máy chủ tomcat. nhưng phụ thuộc vào loại hoạt động nào bạn sử dụng dự án của bạn. Ngoài ra tôi nghĩ tomcat cung cấp một số bảo mật để chạy nó. –

+0

Loại bảo mật nào bạn có ý nghĩa với "Ngoài ra tôi nghĩ tomcat cung cấp một số bảo mật để chạy nó."? – Andy

+0

Tôi nghĩ rằng Ngài đang nói về lĩnh vực jdbc ví dụ –

Trả lời

0
  1. Tôi không biết nhiều về dịch vụ Windows nhưng trên Linux bạn có thể thêm thực thi jar vào RC-Scripts (và do đó làm cho ứng dụng bắt đầu ở mức chạy nhất định). Đối với ứng dụng khởi động mùa xuân, bạn chỉ cần liên kết tượng trưng với bình và bạn có thể bắt đầu/dừng/etc như bất kỳ dịch vụ nào khác, xem: Spring Boot application as a Service

  2. Khởi động lại máy hoặc JVM? Một cơ chế tắt máy được xây dựng vào khởi động mùa xuân, bạn chỉ cần kích hoạt nó (và bạn nên kích hoạt chế độ bảo mật để không ai có thể làm điều đó), xem: How to shutdown a Spring Boot Application in a correct way?

  3. Spring-Boot cho phép microservices - vì vậy ý ​​tưởng là có một webapp-container nhúng cho mỗi webapp/microservice. Điều này làm giảm nguy cơ mất tất cả các dịch vụ khi chỉ có một dịch vụ đi xuống.

  4. Có. và bạn phải thực thi catalina.sh|bat start sau mỗi lần khởi động lại. Hoặc bạn thêm tập lệnh khởi động thích hợp (xem 1.)

Tôi hiểu rằng bạn thích làm theo cách cũ hơn. Mặc dù câu trả lời 'có vấn đề về hương vị', có một đối số ủng hộ: sự phụ thuộc duy nhất là JVM! Phần còn lại (web-app-container, db-drivers, các thư viện khác) là tất cả các phần của gói bạn phân phối. Và nếu bạn quyết định thay đổi vùng chứa cho bản phát hành tiếp theo, nó sẽ như vậy.

+0

Không không không, tôi thực sự thích sử dụng khởi động mùa xuân với bình chất béo mà mối quan tâm duy nhất của tôi là về cách triển khai nó trong sản xuất, hoặc trong trường hợp bình luận của bạn làm thế nào tôi có thể tạo kịch bản đặt jar làm dịch vụ vì không có nhiều tài liệu về cách triển khai trong quá trình sản xuất bình, đây là lý do vì trong sản xuất tôi sử dụng bên ngoài thùng đựng hàng. –

+0

Tôi không biết điều đó, nhưng nó đơn giản hơn nhiều so với tôi nghĩ: http://stackoverflow.com/questions/21503883/spring-boot-application-as-a-service – Andy

8

jar bao bì là hoàn toàn thích hợp cho việc sản xuất và bạn thay vì phải dự phòng để chiến tranh chỉ khi bạn thực sự phải - mà thường là trường hợp khi bạn không thể kiểm soát môi trường triển khai của bạn (mà thường là trường hợp trong các doanh nghiệp lớn).

Có một chương trong Tham chiếu khởi động mùa xuân về việc thiết lập ứng dụng dựa trên khởi động mùa xuân dưới dạng dịch vụ Unix/Linux/Windows: Installing Spring Boot applications.

Về thắc mắc của bạn:

Có lẽ trong tương lai tôi cần nhiều ứng dụng trong cùng một container.

Với vùng chứa được nhúng nếu bạn cần nhiều ứng dụng chạy trên cùng một máy, bạn nên khởi động hai ứng dụng riêng biệt, mỗi ứng dụng chạy trên cổng khác nhau và hiệu quả bạn sẽ kết thúc với hai thùng đang chạy - tốt, ứng dụng tốt hơn cô lập với nhau.

+0

Vấn đề với việc triển khai jar là nếu bạn có N ứng dụng, bạn sẽ có N máy chủ nhúng. Nếu nó tốt từ một quan điểm cách ly nó sẽ nhân bộ nhớ được tiêu thụ bởi các máy chủ ứng dụng bằng N. Mà có thể là một vấn đề nếu N là lớn. Phải không? –

2

Khoảng một tháng trước, tôi có câu hỏi giống như câu hỏi của bạn. Hãy để tôi chia sẻ kết luận của tôi:

1) JAR:

  • Bạn có thể chạy một cách độc lập mỗi appliction với cổng khác nhau (trong linux, java -jar ...> app_logs.log &) và bạn có thể định tuyến nó (ví dụ: nginx). Lưu ý rằng, khởi động lại không phải là vấn đề. Bạn có thể viết kịch bản bash tùy chỉnh (như thế này: ps aux | grep tên ứng dụng và tiêu diệt bởi PID)
  • Nhưng có một số vấn đề với cấu hình ứng dụng sản xuất. Các tệp thuộc tính sẽ được lưu trữ vào trong jar.

2) WAR

  • Bạn có thể triển khai vào container và chỉ cần chạy nó. Dễ dàng quản lý tại máy chủ. Nếu bạn muốn định cấu hình lại ứng dụng, hãy mở tệp thuộc tính từ thư mục chưa lưu trữ bên trong vùng chứa, thay đổi nó khi cần và khởi động lại vùng chứa. Vì vậy, quản lý và cấu hình sẽ dễ dàng.
  • Tuy nhiên, nếu bạn muốn chạy một ứng dụng khác trong máy chủ này bằng một cổng khác, thì bạn phải cài đặt một bản sao vùng chứa khác và định cấu hình nó.

Vì vậy, trong thực tế của tôi, sử dụng ứng dụng chiến tranh dễ dàng hơn bình để quản lý và định cấu hình lại.

+2

Tôi không đồng ý với kết luận chiến tranh so với kết luận. Chạy Spring Boot với Tomcat được nhúng dưới dạng tệp jar thực thi là một thực hành dễ dàng hơn nhiều. Mối quan tâm trên nhiều trường hợp đang chạy và nhu cầu cho các cổng khác nhau được giải quyết dễ dàng với việc sử dụng các cấu hình và chỉ định hồ sơ khi khởi động, như: --spring.profiles.active = prodconfig1, v.v. Hoặc thậm chí tốt hơn, chỉ cần chuyển vào mong muốn tomcat port như một máy ảo paramter: -Dserver.port = 9090 sản lượng đầu ra: (TomcatEmbeddedServletContainer) - Tomcat bắt đầu trên cổng (s): 9090 (http) – pczeus

+1

Sau rất nhiều thời gian, tôi đồng ý với ý tưởng của bạn. –

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