php - Docker Image 安装 php 模块

标签 php ubuntu docker docker-compose apt-get

我创建了一个如下所示的 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_name

docker-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 等。

最佳答案

我会使用官方 PHP 图像 from 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 上的图像上还有其他版本的其他标签 - 检查那里的文档

希望对你有帮助

迪伦

关于php - Docker Image 安装 php 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218886/

相关文章:

javascript - 为什么 in_array() 总是返回 false(用户权限)?

c++ - OpenCV 错误 : Assertion failed (a_size. 宽度 == 长度)

docker - gitlab-runner docker-machine 错误

php - 为什么 Yii-2 框架的自动生成 View (gii) 前有一个下划线?

php - 扩展无法启用或安装的问题

java - 在 osx 和 ubuntu 中安装 onos 失败

linux - 是否可以确定 linux 机器中终端的背景颜色?

docker - Visual Studio 2017 停止运行 docker-compose

docker - 如何修复 Kafka Docker 容器抛出 0.0.0.0/0.0.0.0 :2181: Connection refused?

php - 使用 PHPExcel 为单元格设置正确的阅读格式