惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
爱范儿
爱范儿
J
Java Code Geeks
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
月光博客
月光博客
S
Secure Thoughts
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
O
OpenAI News
酷 壳 – CoolShell
酷 壳 – CoolShell
N
News and Events Feed by Topic
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Webroot Blog
Webroot Blog
博客园 - Franky
有赞技术团队
有赞技术团队
美团技术团队
Jina AI
Jina AI
S
Security @ Cisco Blogs
博客园 - 叶小钗
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
Project Zero
Project Zero
A
Arctic Wolf
大猫的无限游戏
大猫的无限游戏
Latest news
Latest news
小众软件
小众软件
IT之家
IT之家
S
Security Affairs

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2019-01-06 · via 轶哥博客

2018年12月6日PHP官方发布了PHP 7.3.0 正式版。恰逢最近在写一个PHP在线练习的网站,特意去翻了一下7.3.0正式版的Docker镜像。

因为官方镜像只包含了最基本的模块,像pdo_mysqlredis之类的模块并没有包含进去。在hub.docker.com中找到一个相对比较合适的 PHP 7.2 版本的Dockerfilehttps://hub.docker.com/r/phpdocker/phpdocker/),却发现作者将MariaDBRedis ServerNode.js等内容给编进了Image。

我比较喜欢干净的Docker Image,一个镜像只做一个事情。像MySQLRedis之类的数据库,可以单独启动相应的模块。

因此我在前人的基础上,移除了MariaDBRedis ServerNode.js并升级PHP版本到7.3.0正式版。

PHP模块(加粗部分是在官方PHP镜像的基础上添加的模块)

[PHP Modules] apcu bcmath bz2 calendar Core ctype curl date dom exif fileinfo filter ftp gd gettext gmp hash iconv intl json libxml mbstring memcached mysqli mysqlnd openssl pcre PDO pdo_mysql pdo_sqlite Phar posix readline redis Reflection session SimpleXML soap sockets sodium SPL sqlite3 ssh2 standard sysvmsg sysvsem sysvshm tokenizer xdebug xml xmlreader xmlrpc xmlwriter xsl zip zlib

[Zend Modules] Xdebug

Usage

DockerHub:

docker pull wy373226722/php:7.3

中国:

docker pull registry.cn-shenzhen.aliyuncs.com/yi-ge/php:7.3

Run

Example:

docker run -itd --name php -v /www:/www -w /www -p 9000:9000 wy373226722/php:7.3

You can run it use rancher or portainer.

Dockerfile

https://github.com/yi-ge/php/blob/master/Dockerfile

More

在生成Docker Image的时候,ssh2模块报错:

Makefile:196: recipe for target 'ssh2_fopen_wrappers.lo' failed

原因是PHP 7.3不能直接安装PECL仓库的ssh2模块。

相关的BUG信息在:https://bugs.php.net/bug.php?id=77265#1544266627

相关的修复信息:http://git.php.net/?p=pecl/networking/ssh2.git;a=commit;h=a8835aab2c15e794fce13bd927295719e384ad2d

因此只能从仓库克隆编译:

# ssh2
RUN apt-get install -y \
    libssh2-1-dev

RUN cd /tmp && git clone https://git.php.net/repository/pecl/networking/ssh2.git && cd /tmp/ssh2 \
&& phpize && ./configure && make && make install \
&& echo "extension=ssh2.so" > /usr/local/etc/php/conf.d/ext-ssh2.ini \
&& rm -rf /tmp/ssh2

这个仓库中的Dockerfile已经修复了该问题。

安装更多模块

2019年01月13日09:59:26 更新

如果已经创建了镜像,但是还希望增加模块。可以先进入容器:

docker exec -it 容器ID bash

使用docker-php-ext-install命令进行安装。

root@6b44b2984da7:/www# docker-php-ext-install --help
usage: /usr/local/bin/docker-php-ext-install [-jN] ext-name [ext-name ...]
   ie: /usr/local/bin/docker-php-ext-install gd mysqli
       /usr/local/bin/docker-php-ext-install pdo pdo_mysql
       /usr/local/bin/docker-php-ext-install -j5 gd mbstring mysqli pdo pdo_mysql shmop

if custom ./configure arguments are necessary, see docker-php-ext-configure

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 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 sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip

Some of the above modules are already compiled into PHP; please check
the output of "php -i" to see which modules are already loaded.

安装完成后重启容器即可:

docker restart 容器ID

查看是否报错:

docker logs 容器ID --tail 100