2015-10-30 18 views
5

Tôi đang cố gắng thiết lập môi trường phát triển cho dự án khởi động mùa xuân dựa trên docker và lang thang. Tôi đang sử dụng IntelliJ chạy trên cửa sổ để viết mã và lang thang để có thể chạy dự án trong container docker trên bất kỳ hệ thống. Tôi đang xây dựng dự án với maven. Hiện tại tôi có thể chạy ứng dụng được đóng gói trong jar trong thùng chứa docker chạy trong ubuntu trên virtualbox thông qua lang thang. Tôi không thể tìm ra cách gỡ lỗi ứng dụng của mình trong IntelliJ, tôi bắt đầu áp dụng gỡ lỗi từ xa, đúng không (hoặc ít nhất tôi nghĩ là tôi đang làm đúng) cấu hình chuyển tiếp cổng, nhưng IntelliJ vẫn nói với tôi "Connection reset" và không thể kết nối với trình gỡ rối.gỡ lỗi khởi động mùa xuân trong lang thang và docker

Đây là Dockerfile tôi:

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 

Và 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 

Tôi tạo ra tập tin này với sự giúp đỡ của http://blog.zenika.com/2014/10/07/Setting-up-a-development-environment-using-Docker-and-Vagrant/https://spring.io/guides/gs/spring-boot-docker/

Trong IntelliJ tôi đã thêm cấu hình gỡ lỗi từ xa mới và đặt cổng thành 9081. Nếu có ai đó có ý tưởng về cách cấu hình môi trường này để hoạt động ở chế độ gỡ lỗi, tôi sẽ rất vui khi được trợ giúp.

Nếu tôi quản lý để kết nối với trình gỡ lỗi cho ứng dụng của mình, tôi cũng muốn có một số trao đổi nóng và chức năng tải lại tài nguyên tĩnh mà không cần phải biên dịch lại với maven và khởi động lại docker. Vì vậy, bất kỳ trợ giúp trong lĩnh vực này cũng sẽ là tuyệt vời nhưng nó không phải là phải có.

+0

Tôi đang thực hiện hầu như điều tương tự nhưng tôi đang sử dụng IP sửa trong cấu hình lang thang của mình để tôi có thể nhập IP trong máy chủ từ IntelliJ và hoạt động tốt –

+0

Tôi đã sửa ip trong Vagrant_docker_wrapper như sau: config.vm. mạng "private_network", ip: "192.168.50.4" nhưng nó không thực hiện thủ thuật. IntelliJ vẫn nhận được tôi "Kết nối từ chối: kết nối". Trên cả localhost và 192.168.50.4 – gandalfml

Trả lời

5

Ok, tôi đã tìm thấy lỗi của mình, trong tệp lang thang, tôi chỉ có cổng 8080 được tiếp xúc từ bộ chứa docker. Tôi cũng có hai tùy chọn -Xdebug -Xrunjdwp được định nghĩa là tùy chọn duy nhất trong entrypoint docker. tập tin Docker đúng trông như thế này:

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

Và đúng lang thang file:

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 

Ngoài ra, khi bây giờ tôi đang kết nối thông qua debugger đến máy chủ, tôi có thể trao đổi các lớp java nóng không có vấn đề (I chưa kiểm tra tài nguyên tĩnh).

+0

bạn có thể kiểm tra trao đổi tài nguyên tĩnh không? – Charith

+0

không may để tải lại tài nguyên tĩnh Tôi vẫn cần triển khai lại ứng dụng – gandalfml

+0

bạn có nhận được nhật ký console trong intellij không? –

Các vấn đề liên quan