मैंने एक अलग वेब ऐप के लिए संचार सेवा के रूप में उपयोग किए जाने वाले एप्लिकेशन को विकसित किया। मेरे पास वेब ऐप "0 डॉकटराइज़िंग" के मुद्दे थे, लेकिन यह सेवा एक बुरा सपना साबित हो रही है। यह जावाएफ़एक्स पर आधारित है और एक ऐसी संपत्ति है जिसे उपयोगकर्ता द्वारा कॉन्फ़िगर फ़ाइल में सेट किया जा सकता है जो इसे बनाता है ताकि ऐप किसी भी विंडो, मेनू, कंटेनर आदि को इनिशियलाइज़ न करे। यह "हेडलेस" मोड है (निश्चित रूप से सही नहीं है हेडलेस ...) प्रभावी रूप से सेवा ऐप को पृष्ठभूमि सेवा में बदल देता है। मुझे यह कहते हुए भी प्रस्तावना दें कि मेरे विंडोज़ 10 मशीन पर चलने पर यह ऐप पूरी तरह से त्रुटिपूर्ण रूप से काम करता है और मैंने इसे बिना किसी मुद्दे के साथ कई अन्य मशीनों (सभी गैर-डॉक्यूमेंटेड) पर तैनात किया है।
यहाँ मैं के साथ आया dockerfile है:
FROM openjdk:13.0.1-slim
RUN apt-get update && apt-get install libgtk-3-0 libglu1-mesa -y && apt-get update
VOLUME /tmp
ADD Some_Service-0.0.1-SNAPSHOT.jar Some_Service-0.0.1-SNAPSHOT.jar
ADD lib lib
ADD config.properties config.properties
ENTRYPOINT ["java", "--module-path", "lib/javafx-sdk-13", "-jar", "Some_Service-0.0.1-SNAPSHOT.jar"]
मैं कंटेनर बनाने के लिए इस कमांड का उपयोग करता हूं:
docker run -t --name Some_Service -e DISPLAY=192.168.1.71:0.0 -e SERVICE_HOME= --link mySQLMD:mysql some_service
VcXsrv मानकर मेरे पीसी पर चल रहा है, ऐप सही ढंग से शुरू होता है, हालांकि यह पहली बार शुरू होने पर ये चेतावनी देता है:
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Prism-ES2 Error : GL_VERSION (major.minor) = 1.4
मुद्दा यह है कि यह केवल 2 मिनट के लिए काम करता है। आखिरकार कंटेनर इस त्रुटि के साथ आता है और दुर्घटनाग्रस्त हो जाता है:
Gdk-Message: 15:28:54.770: java: Fatal IO error 11 (Resource temporarily unavailable) on X server 192.168.1.71:0.0.
मैं समझता हूं कि शुरुआती संदेश कंटेनर के कारण हैं, जिसमें कोई एनवीडिया चालक नहीं है, लेकिन सॉफ्टवेयर पाइपलाइन में गिरावट ठीक काम करने लगती है। ईमानदारी से मुझे पता नहीं है कि घातक IO त्रुटि किस कारण से हो सकती है। मैंने अलग-अलग मेजबानों को चलाने वाले पर कोशिश की है और एक ही मुद्दा होता है।
इसे ठीक करने के लिए कोई भी विचार? इससे भी बेहतर, किसी भी विचार को कैसे एक JavaFX ऐप ट्रूली को बिना सिर के बनाना है और इसके लिए किसी भी सामान की आवश्यकता नहीं है? जब मैं बिना सिर के दौड़ता हूं, तो मैं टास्क का उपयोग करता हूं और जो जावाएएफएक्स का हिस्सा हैं, इसलिए मैं इसका इस्तेमाल नहीं कर सकता ...
-v /tmp/.X11-unix:/tmp/.X11-unix
) में मेजबान एक्ससेवर को बांधने की कोशिश की है ? Xserver से जुड़ने की कोशिश करने वाले ऐप का सुझाव है कि यह "हेडलेस" नहीं है, इसके कार्यान्वयन की समीक्षा करने की आवश्यकता होगी।