【问题标题】:How to install extensions using docker-php-extension-installer如何使用 docker-php-extension-installer 安装扩展
【发布时间】:2021-01-16 13:42:46
【问题描述】:

我是 docker 新手。 我想使用 docker-php-extension-installer 将 PHP 扩展安装到我的容器中,因为根据 php-docker hub 文档,此脚本基于 docker-php-ext-* 脚本构建并通过自动简化 PHP 扩展的安装添加和删​​除 Debian (apt) 和 Alpine (apk) 软件包。

问题是当我尝试安装 gd 或 pdo_mysql 或其他东西时,当我在 bash 中运行 php -m 命令时,扩展已安装但未显示在模块列表中。

这是我的 DockerFile

FROM php:7.3-fpm

# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"

RUN apt-get update && apt-get install -y unzip \
    && apt-get install -y git nano \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# use https://github.com/mlocati/docker-php-extension-installer to simply install php extensions with dependencies
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/

RUN chmod uga+x /usr/local/bin/install-php-extensions && sync && \
    install-php-extensions gd pdo_mysql

也许我必须以某种方式启用这些扩展,但我怎样才能从我的 Dockerfile 中做到这一点? docker-php-extension-installer 页面文档和官方 php docker 页面中都没有提到这一点。

如果有人知道,请帮忙。谢谢。

【问题讨论】:

  • 你确定你重建了你的图像吗?当我使用来自their doc 的信息并抛出一个额外的pdo_mysql,然后以CMD php -m 结束我的Dockerfile 时,我确实看到那里列出了预期的模块
  • 谢谢。这是我的错。

标签: php dockerfile


【解决方案1】:

上面提到的 Dockerfile 被用作 docker-compose 的一部分。当我创建一个 docker-compose.yml 文件时,我犯了一个错误。为了更改默认的 php 配置,我安装了折叠的主机,在其中保存了我的自定义 php.ini,并将其映射到 php 容器中的 conf.d 文件夹。像这样:

  # PHP Service
  php:
    build: ./.docker/php
    volumes:
      - ./.docker/php/conf.d:/usr/local/etc/php/conf.d:ro
    depends_on:
      - mysql

但 conf.d 文件夹保存了所有已安装扩展的配置,例如:

docker-php-ext-gd.ini  docker-php-ext-pdo_mysql.ini  docker-php-ext-sodium.ini  docker-php-ext-xdebug.ini

所以我的主机文件夹的内容替换了原来的 conf.d 内容,结果 - 扩展不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 2019-08-25
    相关资源
    最近更新 更多