如何在 php:7.4-fpm-alpine docker 容器中启用 xdebug?

oll*_*olm 0 php xdebug laravel docker fpm

我的目标是将此 git repo 用于 Laravel 和 xdebug 用于 php-fpm:https : //github.com/aschmelyun/docker-compose-laravel

使用此 repo 时,我运行:

  1. docker-compose up -d --build 站点
  2. 码头工人组成

这是来自上述 repo 的 docker 文件:

FROM php:7.4-fpm-alpine

ADD ./php/www.conf /usr/local/etc/php-fpm.d/www.conf
RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN mkdir -p /var/www/html
RUN chown laravel:laravel /var/www/html
WORKDIR /var/www/html
RUN docker-php-ext-install pdo pdo_mysql
Run Code Online (Sandbox Code Playgroud)

我还在此处添加了端口(compose.dockerfile):

php:
    build:
      context: .
      dockerfile: php.dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html:delegated
    ports:
      - "9000:9000"
     # Added next line:
      - "9001:9001"                     
    networks:
      - laravel
Run Code Online (Sandbox Code Playgroud)

我尝试将其添加到 php.dockerfile 的末尾:

# Install essential build tools
RUN apk add --no-cache \
    git \
    yarn \
    autoconf \
    g++ \
    make \
    openssl-dev

# Install xdebug
RUN docker-php-source extract \
    && pecl install xdebug \
    && echo "xdebug.remote_enable=on\n" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_autostart=on\n" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_port=9001\n" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_handler=dbgp\n" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_connect_back=1\n" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && docker-php-ext-enable xdebug \
    && docker-php-source delete \
    && rm -rf /tmp/*
Run Code Online (Sandbox Code Playgroud)

这是添加上述行时出现的错误(似乎无关,但我想它会破坏某些依赖性):

mysql       | Version: '5.7.29'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
composer    | list [--xml] [--raw] [--format FORMAT] [--] [<namespace>]
composer    |
npm exited with code 1
composer exited with code
Run Code Online (Sandbox Code Playgroud)

我尝试了在谷歌上找到的其他东西。但是无法让它工作(因为我真的不明白我在做什么)。我认为以上感觉就像是我得到的封闭,但也许我完全错了。

我在 Windows 10 上运行它,需要更多信息吗?

Tan*_*uka 6

RUN apk add --no-cache $PHPIZE_DEPS \
    && pecl install xdebug-2.9.2 \
    && docker-php-ext-enable xdebug  \
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码片段可能是解决方案,但[包括解释](//meta.stackexchange.com/questions/114762/explaining-entirely-‌​code-based-answers)确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您建议代码的原因。 (6认同)