2015-10-30 34 views
5

ドッキングステーションと迷惑メールに基づいたスプリングブートプロジェクトの開発環境を設定しようとしています。私はIntelliJをWindows上で動作させてコードを書いていて、どんなシステムでもドッカーコンテナでプロジェクトを実行できるようにしています。私はmavenでプロジェクトを構築しています。現在私は、アプリケーションをvagrantを介して仮想ボックス上のubuntuで稼働しているドッカーコンテナでパッケージ化することができます。私はIntelliJで自分のアプリケーションをデバッグする方法を理解できません。私はリモートデバッグを使ってアプリケーションを正しく起動します(あるいは、少なくとも私は正しいと思います)。ポートフォワーディングを設定しますが、IntelliJは "Connection reset"デバッガに接続します。ここで迷惑メールとドッカーのデバッグスプリングブート

は私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を持っていると思います。だから、この分野の助けも大丈夫ですが、持っている必要はありません。

+0

私はほぼ同じことをしていますが、私は迷惑メール設定で修正IPを使用していますので、IntelliJからホストにIPを入力するとうまくいきます。 –

+0

Vagrant_docker_wrapperでipを固定しました:config.vmネットワーク "private_network"、ip: "192.168.50.4"しかし、それはやっていません。 IntelliJはまだ私に "Connection refused:connect"を取得しています。 localhostと192.168.50.4の両方で – gandalfml

答えて

5

私は間違いを見つけました。迷惑メールファイルには、ドッキング用のコンテナからポート8080しか公開されていません。私は2つのオプション-Xdebug -Xrunjdwpをdockerエントリポイントの単一オプションとして定義しました。

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 

、私はでき問題なくホットスワップJavaクラス(Iまだ静的リソースをチェックしていない)。

+0

は静的リソースのスワップを確認できましたか? – Charith

+0

残念ながら静的リソースをリロードするにはまだアプリケーションを再デプロイする必要があります – gandalfml

+0

intellijのコンソールログを取得していますか? –

関連する問題