我正在嘗試爲基於docker和vagrant的spring-boot項目設置開發環境。我使用在Windows上運行的IntelliJ來編寫代碼,並且可以在任何系統上的Docker容器中運行項目。我正在用maven構建項目。目前,我能夠運行在jar包中運行的應用程序,通過vagrant在虛擬機上運行在ubuntu上的docker容器中。我無法弄清楚如何在IntelliJ中調試我的應用程序,我開始使用遠程調試的應用程序,正確地(或者至少我認爲我是正確的)配置端口轉發,但IntelliJ仍然告訴我「連接重置」,不能連接到調試器。在vagrant和docker中調試spring引導
這裏是我的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
我創建的http://blog.zenika.com/2014/10/07/Setting-up-a-development-environment-using-Docker-and-Vagrant/幫助和https://spring.io/guides/gs/spring-boot-docker/
這個文件在IntelliJ中,我添加了新的遠程調試配置並將端口設置爲9081.如果有人有任何想法,我應該如何配置此環境以在調試模式下工作,我將很樂意提供任何幫助。
如果我設法連接到調試器到我的應用程序,我也想有一些熱插拔和靜態資源重新加載functionallity,而無需重新編譯maven並重新啓動docker。所以這方面的幫助也會很大,但不一定要有。
我在做幾乎相同的事情,但我在我的vagrant配置中使用修復IP,因此我可以從IntelliJ輸入IP到主機,它工作正常 –
我修復了Vagrant_docker_wrapper中的ip,如下所示:config.vm。網絡「private_network」,IP:「192.168.50.4」,但它並沒有辦法。 IntelliJ仍然讓我「拒絕連接:連接」。在本地主機和192.168.50.4 – gandalfml