2015-10-30 27 views
5

Sto provando a configurare l'ambiente di sviluppo per il progetto di avvio a molla basato su finestra mobile e vagabondo. Sto usando IntelliJ in esecuzione su Windows per scrivere codice e vagabondo per essere in grado di eseguire il progetto in contenitori docker su qualsiasi sistema. Sto costruendo un progetto con Maven. Attualmente sono in grado di eseguire l'applicazione pacchettizzata in un contenitore docker in esecuzione su Ubuntu su virtualbox via vagabondo. Non riesco a capire come eseguire il debug della mia applicazione in IntelliJ, avviare l'applicazione con debug remoto, correttamente (o almeno credo di farlo correttamente) configurare il port forwarding, ma IntelliJ mi dice ancora "Connection reset" e non posso connettersi al debugger.avvio a molla di debug in vagabondo e finestra mobile

Ecco il mio 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 

E 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 

Ho creato questo file con l'aiuto di http://blog.zenika.com/2014/10/07/Setting-up-a-development-environment-using-Docker-and-Vagrant/ e https://spring.io/guides/gs/spring-boot-docker/

In IntelliJ ho aggiunto una nuova configurazione di debug remoto e impostato la porta su 9081. Se qualcuno ha qualche idea su come dovrei configurare questo ambiente affinché funzioni in modalità di debug, sarò lieto di ricevere aiuto.

Se riesco a collegarmi con il debugger alla mia app, voglio anche avere alcune hot swap e risorse statiche ricaricare la funzionalità senza dover ricompilare con Maven e riavviare la finestra mobile. Quindi qualsiasi aiuto in quest'area sarà grande ma non è necessario.

+0

Sto facendo quasi la stessa cosa ma sto usando l'IP di correzione nella mia configurazione vagabonda così posso inserire l'IP nell'host da IntelliJ e funziona bene –

+0

Ho risolto l'ip in Vagrant_docker_wrapper in questo modo: config.vm. network "private_network", ip: "192.168.50.4" ma non fa il trucco. IntelliJ mi sta ancora ricevendo "Connessione rifiutata: connetti". Su entrambi localhost e 192.168.50.4 – gandalfml

risposta

5

Ok, ho trovato il mio errore, nel file vagabondo ho solo la porta 8080 esposta dal contenitore docker. Ho anche due opzioni: Xdebug -Xrunjdwp definito come singola opzione nel punto di accesso del docker. file di Docker corretta assomiglia a questo:

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"] 

e corretta del file vagabondo:

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 

Inoltre, quando sono ora connessi tramite debugger al server, posso classi di swap java senza problemi (I non ha ancora controllato le risorse statiche).

+0

sei riuscito a verificare lo scambio di risorse statiche? – Charith

+0

sfortunatamente per ricaricare risorse statiche devo ancora ridistribuire l'applicazione – gandalfml

+0

stai ottenendo il log della console in intellij? –

Problemi correlati