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?
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
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
Tôi đang chạy Ubuntu 15.04 –