我正在尝试为基于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