Docker 图片安装 php 个模块
Docker Image installing php modules
我创建了一个如下所示的 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_pgsql
、xml
、xmlreader
等
我会使用官方 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 上的图像上还有其他版本的其他标签 - 查看那里的文档
希望对您有所帮助
迪伦
而不是...
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
我创建了一个如下所示的 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_pgsql
、xml
、xmlreader
等
我会使用官方 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 上的图像上还有其他版本的其他标签 - 查看那里的文档
希望对您有所帮助
迪伦
而不是...
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