2015-10-30 11 views
5

में स्प्रिंग बूट डीबग करें मैं डॉकर और वारंटी के आधार पर वसंत-बूट परियोजना के लिए विकास पर्यावरण स्थापित करने की कोशिश कर रहा हूं। मैं किसी भी सिस्टम पर डॉकर कंटेनर में प्रोजेक्ट चलाने में सक्षम होने के लिए कोड और योनेंट लिखने के लिए विंडोज़ पर इंटेलिजे का उपयोग कर रहा हूं। मैं मेवेन के साथ परियोजना का निर्माण कर रहा हूँ। वर्तमान में मैं आवृत्ति के माध्यम से वर्चुअलबॉक्स पर उबंटू में चल रहे डॉकर कंटेनर में जार में पैक किए गए एप्लिकेशन को चलाने में सक्षम हूं। मैं यह नहीं समझ सकता कि IntelliJ में अपने एप्लिकेशन को डीबग कैसे करें, मैं रिमोट डीबगिंग के साथ एप्लिकेशन को सही तरीके से शुरू करता हूं, या कम से कम मुझे लगता है कि मैं इसे सही कर रहा हूं) पोर्ट अग्रेषण को कॉन्फ़िगर करें, लेकिन इंटेलिजे अभी भी मुझे "कनेक्शन रीसेट" बताता है और नहीं कर सकता डीबगर से कनेक्ट करें।वानर और डॉकर

यहाँ मेरी Dockerfile है:

FROM java:8 
VOLUME /tmp 
ADD test-1.0-SNAPSHOT.jar app.jar 
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n,address=8000", "-jar", "/app.jar"] 

Vagrantfile:

ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker' 

Vagrant.configure("2") do |config| 
    config.vm.define "app" do |a| 
    a.vm.provider "docker" do |d| 
     d.vagrant_machine = "dockerhost" 
     d.vagrant_vagrantfile = "./Vagrant_docker_wrapper" 
     d.build_dir = "." 
     d.build_args = ["-t=app"] 
     d.ports = ["8080:8080", "8000:8000"] 

     d.name = "app" 
     d.remains_running = true 
     d.has_ssh = true 
     d.cmd = ["run"] 
    end 
    end 
end 

और Vagrant_docker_wrapper:

Vagrant.configure("2") do |config| 

    config.vm.provision "docker" 

    config.vm.provision "shell", inline: "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill" 

    config.vm.define "dockerhost" 
    config.vm.box = "ubuntu/trusty64" 
    config.vm.network "forwarded_port", guest: 8080, host: 9080 
    config.vm.network "forwarded_port", guest: 8000, host: 9081 

    config.vm.provider :virtualbox do |vb| 
     vb.name = "dockerhost" 
    end 

end 

मैं इस और https://spring.io/guides/gs/spring-boot-docker/

की मदद से फ़ाइलों को बनाया

इंटेलिजे में मैंने नई रिमोट डीबग कॉन्फ़िगरेशन और 9 081 पर पोर्ट सेट किया। अगर किसी के पास कोई विचार है कि मुझे डीबग मोड में काम करने के लिए इस माहौल को कैसे कॉन्फ़िगर करना चाहिए, तो मुझे किसी भी मदद के लिए खुशी होगी।

यदि मैं अपने ऐप में डीबगर से कनेक्ट करने का प्रबंधन करता हूं, तो मैं कुछ गर्म स्वैप और स्थैतिक संसाधनों को फिर से लोड करना चाहता हूं, बिना मैवेन के पुन: कंपाइल करने और डॉकर को पुनरारंभ करने की आवश्यकता के बिना। तो इस क्षेत्र में कोई भी मदद भी महान होगी लेकिन यह होना जरूरी नहीं है।

+0

मैं लगभग वही काम कर रहा हूं लेकिन मैं अपनी योनि कॉन्फ़िगरेशन में फिक्स आईपी का उपयोग कर रहा हूं, इसलिए मैं इंटेलिजे से मेजबान में आईपी दर्ज कर सकता हूं और यह ठीक काम करता है –

+0

मैंने आईपी को Vagrant_docker_wrapper में इस तरह से तय किया है: config.vm। नेटवर्क "private_network", आईपी: "1 9 2.168.50.4" लेकिन यह चाल नहीं करता है। IntelliJ अभी भी मुझे मिल रहा है "कनेक्शन से इनकार कर दिया: कनेक्ट"। स्थानीयहोस्ट और 1 9 2.168.50.4 – gandalfml

उत्तर

5

ठीक है, मुझे अपनी त्रुटि मिली, योनि फ़ाइल में मेरे पास डॉकर कंटेनर से केवल पोर्ट 8080 का खुलासा हुआ है। मेरे पास दो विकल्प भी हैं- Xdebug -Xrunjdwp डॉकर एंट्रीपॉइंट में एकल विकल्प के रूप में परिभाषित किया गया है।

FROM java:8 
VOLUME /tmp 
ADD simple-test-1.0-SNAPSHOT.jar app.jar 
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Xdebug", "-Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n", "-jar", "/app.jar"] 

और सही आवारा फ़ाइल:: सही डोकर फ़ाइल इस तरह दिखता है

ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker' 

Vagrant.configure("2") do |config| 
    config.vm.define "app" do |a| 
    a.vm.provider "docker" do |d| 
     d.vagrant_machine = "dockerhost" 
     d.vagrant_vagrantfile = "./Vagrant_docker_wrapper" 
     d.build_dir = "." 
     d.build_args = ["-t=app"] 
     d.ports = ["8080:8080", "8000:8000"] 
     d.name = "app" 
     d.remains_running = true 
     d.cmd = ["run"] 
    end 
    end 
end 

इसके अलावा, जब मैं अब सर्वर से डिबगर के माध्यम से जुड़े कर रहा हूँ, मैं यह कर सकते हैं समस्याओं के बिना गर्म स्वैप जावा वर्गों (मैं अभी तक स्थिर संसाधनों की जांच नहीं की है)।

+0

दोनों पर आप स्थिर संसाधन स्वैप जांचने में सक्षम थे? दुर्भाग्यवश स्थिर संसाधनों को पुनः लोड करने के लिए – Charith

+0

मुझे अभी भी एप्लिकेशन को पुन: नियोजित करने की आवश्यकता है – gandalfml

+0

क्या आप इंटेलिज में कंसोल लॉग प्राप्त कर रहे हैं? –

संबंधित मुद्दे