কয়েক মিনিটেরও বেশি সময় ধরে ডকারে জাভাএফএক্স অ্যাপ্লিকেশন চালানো যাবে না


9

আমি একটি পৃথক ওয়েব অ্যাপ্লিকেশনের জন্য যোগাযোগ পরিষেবা হিসাবে ব্যবহৃত একটি অ্যাপ্লিকেশন তৈরি করেছি। আমার কাছে ওয়েব অ্যাপটি "ডকারাইজিং" সমস্যা ছিল তবে পরিষেবাটি দুঃস্বপ্ন হিসাবে প্রমাণিত হচ্ছে। এটি জাভাএফএক্স ভিত্তিক এবং এমন একটি সম্পত্তি রয়েছে যা ব্যবহারকারীর দ্বারা কনফিগার ফাইলে সেট করা যায় যা অ্যাপ্লিকেশনটি কোনও উইন্ডো, মেনু, পাত্রে ইত্যাদির সূচনা না করে এই "হেডলেস" মোডে (নিশ্চিত না যে সত্যই এটি নিশ্চিত হেডলেস ...) কার্যকরভাবে পরিষেবা অ্যাপটিকে পটভূমির পরিষেবাতে রূপান্তরিত করে। আমার উইন্ডোজ 10 মেশিনে চালিত হওয়ার সময় অ্যাপটি একেবারে ত্রুটিহীনভাবে কাজ করে এবং আমি কোনও সমস্যা ছাড়াই এটি বেশ কয়েকটি অন্যান্য মেশিনে (সমস্ত ডক-ডাইজারাইজড) স্থাপন করেছি বলে এই প্রবন্ধটিও বলতে চাই Let

এই যে ডকফায়াইলটি আমি নিয়ে এসেছি:

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

ধরে নিই আমার পিসিতে ভিসিএক্সএসআরভি চলছে, অ্যাপটি সঠিকভাবে শুরু হবে, যদিও এটি প্রথম শুরু করার পরে এই সতর্কতা দেয়:

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.

আমি বুঝতে পারি যে প্রারম্ভিক বার্তাগুলি কোনও পাত্রে এনভিডিয়া ড্রাইভার না থাকার কারণে রয়েছে তবে সফ্টওয়্যার পাইপলাইনের পতন ঠিকঠাক বলে মনে হচ্ছে। সত্যিই আমার মারাত্মক আইও ত্রুটি কী কারণে হতে পারে তা আমার কোনও ধারণা নেই। আমি বিভিন্ন হোস্টকে ডকার চালানোর চেষ্টা করেছি এবং একই সমস্যা ঘটে।

কোন ধারনা কিভাবে এটা ঠিক করতে হবে? আরও ভাল, কোনও জাভাএফএক্সএক্স অ্যাপ্লিকেশনকে কীভাবে সত্যবিহীন করা যায় এবং এই স্টাফটির কোনওটি আরম্ভ করার প্রয়োজন হয় না তা সম্পর্কে কোনও ধারণা? মাথা বিহীন চলাকালীন, আমি টাস্কগুলি ব্যবহার করি এবং এটি জাভাএফএক্সের অংশ তাই আমি কেবল এটি ব্যবহার করতে পারি না ...


কনটেইনার রানটাইম (ie -v /tmp/.X11-unix:/tmp/.X11-unix) তে হোস্ট হোস্ট জেসারভারকে বাইন্ড-মাউন্ট করার চেষ্টা করেছেন ? এক্সারভারের সাথে সংযুক্ত করার চেষ্টা করা অ্যাপটি পরামর্শ দেয় যে এটি "মাথাছাড়া" নয়, বাস্তবায়নটি পর্যালোচনা করা দরকার।
মাসেবিব

জিপিইউ সমর্থন দিয়ে চালানোর চেষ্টা করুন। "ডকার রান-টেন
সোমারসোভারসিও

@ অর্শপ্রীত এটি আমাকে এই ত্রুটিটি দেয়: ডেমনের ত্রুটির প্রতিক্রিয়া: "" ক্ষমতা সহ ডিভাইস ড্রাইভার নির্বাচন করতে পারেনি: [[জিপিইউ]]
মার্টিন

@ ম্যাসায়েব আমি একটি উইন্ডোজ মেশিনে ডকার চালাচ্ছি
মার্টিন

উত্তর:


2

আপনার ধারকটিতে xvfb ইনস্টল করুন এটি একটি ভার্চুয়াল স্ক্রিন তৈরি করে। ডকার ফাইলে পরিবর্তন করুন:

FROM openjdk:13.0.1-slim
RUN apt-get update && apt-get install libgtk-3-0 libglu1-mesa xvfb -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
apt-get install xvfb
ENV DISPLAY=:99
ADD run.sh /run.sh
RUN chmod a+x /run.sh
CMD /run.sh 

আপনার প্রকল্প ফোল্ডারে নতুন বাশ স্ক্রিপ্ট যুক্ত করুন এবং এটি "রান.শ" নাম দিন

run.sh:

#!/bin/bash
#remove old 
rm /tmp/.X99-lock #needed when docker container is restarted
Xvfb :99 -screen 0 640x480x8 -nolisten tcp &
java --module-path lib/javafx-sdk-13 -jar Some_Service-0.0.1-SNAPSHOT.jar

-e DISPLAY=192.168.1.71:0.0আপনার ডকার রান কমান্ড থেকে অপসারণ করতে ভুলবেন না


আপনি কী আমাকে জাভা-জজার কমান্ড থেকে জাভা-জার স্টেটমেন্ট এবং এক্সভিএফবি কমান্ড সমন্বিত একটি কমান্ডে প্রবেশের স্থানটি পরিবর্তন করতে পারেন?
মার্টিন

আমি এখানে বর্ণিত পদ্ধতিটি চেষ্টা করেছি: সাফল্য.ডোকার . com / article/… । এটি আমাকে নীচের ত্রুটিটি দিচ্ছে: স্ট্যান্ডার্ড_ইনিট_লিনক্স.গো: 211: এক্সিকিউর ব্যবহারকারী প্রক্রিয়া "এক্সিকিউট ফর্ম্যাট ত্রুটি" সৃষ্টি করেছে
মার্টিন

@ মার্টিন আমি আমার উত্তর সম্পাদনা করেছি আমি আশা করি এটি এখন পরিষ্কার হয়ে গেছে।
leachim742

দুঃখিত আমি ইউনিক্সের সাথে এখনও খুব একটা ভাল নই :( ডকার রান কমান্ড এখনই করার সময় আমি এই ত্রুটিটি পাচ্ছি: / বিন / শ: ১: / রুন.শ: পাওয়া যায় নি
মার্টিন

আপনাকে 'রান.শ' ফাইলটি তৈরি করতে হবে যেখানে আপনার অন্যান্য ফাইলগুলি আপনার স্ন্যাপশট.জারের মতো সঞ্চিত আছে
leachim742
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.