安装 Docker 镜像中的 PHP 模块

5
我创建了一个像下面这样的Dockerfile
FROM ubuntu:14.04

RUN apt-get update -y && apt-get install -y software-properties-common language-pack-en-base

RUN LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

RUN apt-get -y update && apt-get install -y \
    php7.0 \
    php7.0-pgsql \
    php-pear \
    php7.0-curl \
    php7.0-sqlite3 \
    php7.0-xml \
    php7.0-bcmath \
    php7.0-zip \
    php7.0-mbstring \
    php-xdebug \
    php-ast

WORKDIR /var/www/html/code

当我运行docker-compose build container_namedocker-compose run --rm container_name php -m时,似乎并未在容器构建过程中安装所有的php模块。以下是结果显示:
[PHP Modules]
    ast
    calendar
    Core
    ctype
    date
    exif
    fileinfo
    filter
    ftp
    gettext
    hash
    iconv
    json
    libxml
    openssl
    pcntl
    pcre
    PDO
    Phar
    posix
    readline
    Reflection
    session
    shmop
    sockets
    SPL
    standard
    sysvmsg
    sysvsem
    sysvshm
    tokenizer
    xdebug
    Zend OPcache
    zlib

    [Zend Modules]
    Xdebug
    Zend OPcache

我没有看到我期望的php模块,比如pdo_pgsqlxmlxmlreader等。

2个回答

2

我建议使用官方的PHP镜像(来自Dockerhub)。该镜像内置一个实用脚本,可用于安装和启用PHP扩展程序。为了满足您的需求,可以使用以下修订后的Dockerfile:

FROM php:7
RUN docker-php-ext-install <YOUR-EXTENSIONS>
WORKDIR /var/www/html/code

YOUR-EXTENSIONS是以下列表中可能的值:

Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp          
gd gettext gmp hash iconv imap interbase intl json ldap mbstring mcrypt 
mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci 
pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode
reflection session shmop simplexml snmp soap sockets spl standard 
sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc
xmlwriter xsl zip

在Dockerhub上的镜像中,其他版本有其他标签 - 请查看相关文档。

希望这能帮到您。

Dylan


1

代替...

docker-compose run --rm container_name php -m

...类型:

docker-compose run --rm container_name php7.0 -m

在 Dockerfile 中,在...之前。
WORKDIR /var/www/html/code

...添加:

RUN update-alternatives --set php /usr/bin/php7.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接