在 Docker 中安装 pecl 时出现“Noreleases available”错误

问题描述 投票:0回答:3

我正在尝试从 pecl 在 Docker 容器中安装 Xdebug 或 Redis 包。安装失败并返回错误:

“pecl.php.net/xdebug”包没有可用的版本。

Xdebug 示例:https://pecl.php.net/package/xdebug/3.1.0

我的 docker-compose.yaml

version: '3'

networks:
  app-network:

services:
  site:
    build:
      context: .
      dockerfile: nginx.dockerfile
    container_name: my_nginx
    ports:
      - "8082:80"
      - "443:443"
    volumes:
      - ./src:/var/www/html
    depends_on:
      - php
      - db
      - redis
    networks:
      - app-network

  db:
    image: percona
    container_name: my_db
    restart: on-failure
    tty: true
    ports:
      - "3314:3306"
    volumes:
      - ./percona:/var/lib/percona
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_USER: me
      MYSQL_PASSWORD: 123
      MYSQL_ROOT_PASSWORD: 456
      SERVICE_TAGS: dev
      SERVICE_NAME: db
    networks:
      - app-network

  php:
    build:
      context: .
      dockerfile: php.dockerfile
    container_name: my_php
    volumes:
      - ./src:/var/www/html
    ports:
      - "9000:9000"
    networks:
      - app-network

  composer:
    image: frojd/composer-php-7.4
    container_name: my_composer
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
    networks:
      - app-network

  redis:
    image: redis:alpine
    container_name: my_redis
    volumes:
      - ./redis:/data
    restart: on-failure
    command: redis-server --appendonly yes --requirepass "${REDIS_PASSWORD}"
    ports:
      - 6380:6379
    networks:
      - app-network

  npm:
    image: node:14.18.0
    container_name: my_npm
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    entrypoint: ['npm']

  artisan:
    build:
      context: .
      dockerfile: php.dockerfile
    container_name: my_artisan
    volumes:
      - ./src:/var/www/html
    depends_on:
      - db
    working_dir: /var/www/html
    entrypoint: ['php', '/var/www/html/artisan']
    networks:
      - app-network

  cron:
    build:
      context: .
      dockerfile: cron.dockerfile
    container_name: my_cron
    volumes:
      - ./src:/var/www/html
    networks:
      - app-network

我的 php.dockerfile

FROM php:7.4-fpm

WORKDIR /var/www/html

RUN apt-get update && \
    apt-get install ca-certificates && \
    apt-get clean

RUN docker-php-ext-install pdo pdo_mysql

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

错误原因是什么以及如何修复?

php docker xdebug pecl
3个回答
8
投票

您可能位于代理后面...我通过专门为 PECL 设置代理解决了同样的问题(单独的环境变量 $HTTP_PROXY 不起作用)。

RUN pear config-set http_proxy ${http_proxy} &&\
    pear config-set php_ini $PHP_INI_DIR/php.ini

RUN pecl install xdebug-3.1.1 && docker-php-ext-enable xdebug

这个答案对我有帮助:https://stackoverflow.com/a/11195778/256762。希望我的也有帮助😉。


8
投票

我遇到了类似的问题,必须更换安装 xdebug 的方式

之前:

RUN pecl install xdebug-2.9.2 && docker-php-ext-enable xdebug

之后:

RUN cd /tmp && \
    git clone https://github.com/xdebug/xdebug.git && \
    cd xdebug && \
    git checkout xdebug_2_9 && \
    phpize && \
    ./configure --enable-xdebug && \
    make && \
    make install && \
    rm -rf /tmp/xdebug
RUN docker-php-ext-enable xdebug

0
投票

下面的链接帮助我解决了问题

对我来说,这是 docker 的 DNS 问题。我通过添加 docker 设置解决了这个问题,如屏幕截图所示 { "dns": ["8.8.8.8", "8.8.4.4"] } (或您选择的任何 DNS)到主机上的 /etc/docker/daemon.json 。如果json文件尚不存在,您可以创建它。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.