php - Docker 启用 Xdebug
问题描述
我的 php 容器有这样的 Dockerfile:
FROM my-image/debian
ARG PHP_VERSION
...
...
RUN \
set -eux \
\
# INSTALL SURY SOURCES
&& buildDeps='apt-transport-https lsb-release wget' \
&& apt-get update \
&& apt-get install -y --no-install-recommends --no-install-suggests $buildDeps \
&& wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg \
&& echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list \
\
&& update-ca-certificates \
\
# INSTALL PHP PACKAGES
&& apt-get update \
&& apt-get install -y --no-install-recommends --no-install-suggests \
php$PHP_VERSION \
php$PHP_VERSION-cli \
php$PHP_VERSION-fpm \
php$PHP_VERSION-opcache \
php$PHP_VERSION-redis \
php$PHP_VERSION-apcu \
php$PHP_VERSION-zip zip unzip \
php$PHP_VERSION-curl \
php$PHP_VERSION-gd \
php$PHP_VERSION-intl \
php$PHP_VERSION-mysql \
php$PHP_VERSION-soap \
php$PHP_VERSION-amqp \
php$PHP_VERSION-bcmath \
php$PHP_VERSION-socket \
php$PHP_VERSION-dom \
php$PHP_VERSION-mbstring \
php-pear \
php$PHP_VERSION-dev \
&& mkdir -p /var/run/ \
\
# Install xdebug
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
\
# CLEAN
&& apt-get clean \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $buildDeps \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /tmp/* \
....
....
....
当我构建它时,我得到错误 /bin/sh: 1: docker-php-ext-enable: not found
我不想从 alpine 或其他外部 php 图像中获取图像。由于特殊原因,我想构建 php 并从 my-image/debian 中获得帮助。
有人可以帮我激活 xdebug 吗?它安装得很好(通过pecl)但是当我这样做时php -v
它不存在,即使在重建和重新启动容器之后
谢谢
解决方案
docker-php-ext-enable
Debian 映像中默认不存在脚本。您需要将其复制到您的 docker-image 中,就像在官方 7.3 buster image中一样。添加到您的Dockerfile
字符串:
....
COPY docker-php-ext-enable /usr/local/bin/
....
&& docker-php-ext-enable xdebug \
....
不要忘记将docker-php-ext-enable文件放入 build-context 目录。
推荐阅读
- asp.net - 如果单元测试项目引用了 Microsoft.NET.Test.Sdk,.NET Core 2.2 Web 应用程序崩溃
- openssl - 在 MacOS 上安装 pycurl。(链接时 ssl 后端(无/其他)与编译时 ssl 后端(openssl)不同)
- getline - 为什么在第二次迭代中跳过第一个字符
- php - VS Code - PHP 全部自动完成
- ibm-mq - 模拟 MQSeries 服务器
- python - 从 for 循环中的数据框中选择各种日期范围
- asp.net-mvc - MVC“对象引用未设置为对象错误的实例”仅在 IE 浏览器上
- r - 如果 == max(salary),则根据 R 中的另一列在汇总中选择数据
- json - 根据对象何时转换为指针(有时是指针,有时是映射)来更改解组功能
- c++ - try catch 无法处理 pthread 内的分段错误