2015-06-02 21 views
16

Tôi đang cố gắng thiết lập môi trường AMP được gắn trên đế và không thể làm cho trình gỡ lỗi từ xa hoạt động. Thiết lập của tôi như sau:Gỡ lỗi từ xa bằng XDebug từ bên trong Docker Container không hoạt động

Tôi có một thùng chứa cơ sở dữ liệu đang chạy mysql đang hoạt động như một nét duyên dáng. Tôi đã xây dựng một hình ảnh Docker 'phpmysqli' với Dockerfile sau

FROM php:apache 

RUN docker-php-ext-install mysqli mbstring 

# zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so 
RUN pecl install xdebug 
RUN echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> /usr/local/etc/php/php.ini 
RUN touch /usr/local/etc/php/conf.d/xdebug.ini; \ 
    echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \ 
    echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; \ 
    echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \ 
    echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; \ 
    echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini; 

RUN echo 'date.timezone = Europe/Berlin' > /usr/local/etc/php/conf.d/date.ini 

tôi gọi

docker run --rm -ti --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db phpmysqli 

Sau phpinfo này tương ứng php -i cho thấy Xdebug 2.3.2 là lên và chạy.

Tiếp theo, tôi thiết lập Máy chủ bên trong IntelliJ IDEA được gọi là 'Docker' với Máy chủ 127.0.0.1, Cổng 8080 và Debugger Xdebug. Tôi thiết lập ánh xạ đường dẫn tương tự như ánh xạ khối lượng trong câu lệnh chạy docker.

Trong cài đặt PHP-> Debug Tôi đã kiểm tra mà tôi sử dụng cổng 9000 cho các kết nối gửi đến, rằng tôi sẽ chấp nhận kết nối từ bên ngoài và rằng tôi sẽ không bỏ qua các kết nối từ các máy chủ không đăng ký.

Sau này, tôi đã tạo một Cấu hình gỡ lỗi từ xa PHP mới có tên Docker. Máy chủ là Docker, id phiên là XDEBUG_IDEA.

Tôi có thể gọi tệp PHP trên vùng chứa, tôi có thể kết nối với db qua liên kết ... nhưng vì một số lý do không có gì xảy ra khi tôi cố bắt đầu phiên gỡ lỗi. Tôi đã thử sử dụng cookie (và có, tôi đặt XDEBUG_IDEA làm id phiên trong trình trợ giúp xdebug). Tôi đã thử gửi XDEBUG_SESSION_START=XDEBUG_IDEA làm GET ...

Bạn có thể thông minh cho mọi người biết điều tôi đã bỏ lỡ không?

+0

Không có ý tưởng gì là sai, nhưng bạn nên kết nối vào bình chứa của bạn với một 'Docker exec -nó web_id bash' và gỡ lỗi bên trong, như bạn trên bất kỳ máy chủ Linux với một vấn đề như vậy – user2915097

+0

bạn trên Windows? Nếu có, bạn đang sử dụng cái gì cho máy chủ Docker? (vagrant, other?) – Thomasleveil

+0

Tôi đang chạy Ubuntu 15.04 –

Trả lời

13

Bạn có thể thử với cấu hình này. php-apache build cung cấp hai phương thức để biên dịch và kích hoạt php module. Thật tuyệt vời khi sử dụng docker-php-ext-enable xdebug để đặt cấu hình tệp chính xác.

FROM php:5.4-apache 

# Enable and configure xdebug 
RUN pecl install xdebug 
RUN docker-php-ext-enable xdebug 
RUN sed -i '1 a xdebug.remote_autostart=true' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
RUN sed -i '1 a xdebug.remote_mode=req' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
RUN sed -i '1 a xdebug.remote_handler=dbgp' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
RUN sed -i '1 a xdebug.remote_connect_back=1 ' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
RUN sed -i '1 a xdebug.remote_port=9000' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
RUN sed -i '1 a xdebug.remote_host=127.0.0.1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
RUN sed -i '1 a xdebug.remote_enable=1' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
+0

Tôi đã thử "pecl install xdebug" và nó trả về một lỗi: pecl/xdebug yêu cầu PHP (version> = 5.5.0), phiên bản đã cài đặt là 5.4.45 Không tìm thấy gói hợp lệ cài đặt không thành công –

+0

Tôi đã thay đổi "FROM php: 5.4-apache" thành "FROM php: 7.0-apache" và nó đã giải quyết được sự cố của tôi :) –

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