Docker配置apache+php7

应网友要求,最近决定尝试一下配置个docker环境用于 ShirneCMS的配套

本来是打算回去网络好点再做,无奈这macos开发环境太CD,不得不折腾一下。

先下载安装,并找相关的文档初步学习一下。

hub.daocloud.io资料看起来挺丰富的,国内的速度也快(此处有伏笔)。

由于网络慢,下载折腾了好久,趁机初步了解了下docker,还有些不太懂的,边试边理解吧。

hub.daocloud.io里面镜像也不少,首先下载了个centos7的镜像来尝试了下。

安装httpd,开启服务,运行

yum install httpd
systemctl enable httpd
systemctl start httpd

咦!怎么不能后台运行?

看来docker容器跟虚拟机是有区别的,据说开启某个选项就可以运行后台服务了。但是看到镜像里有现成的nginx和apache镜像,就先不那样折腾了。


看了下php的镜像介绍,里面居然有现成的php+apache

镜像列表里太多看不过来,选了个php7.2-apache

docker pull daocloud.io/php:7.2-apache

pull下来一看,8个月前(网站显示6天前)

应该没问题吧,无非不是最新版本的。

于是先开启一个容器看一下效果。php版本是7.2.20的,默认的模块依然没有gd等,pdo_mysql驱动也没有。

按说明安装吧

查了下系统,是debian10的,先改一下apt源,改为阿里云的,速度还是蛮给力的

pt-get update 
apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev
docker-php-ext-install iconv mcrypt
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
docker-php-ext-install gd

libpng12-dev不存在.

搜索了下,有libpng-dev

结合各方资料,最终需要安装的库修改为以下

apt-get install -y libxmp-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev devscripts

./configure失败

freetype-config not found

再三确认,freetype6-dev安装正常,并且也没有其它版本的freetype。

百度搜索这个错误,一律是 apt-get install libfreetype6-dev ,去TMD。

最终找到一篇博文解决了我的疑问

Ubuntu 19.04 PHP 7.3.5 GD库 无法启用 freetype的问题

那么,问题就在要修改php源码,还是换最新的php源码看有没有解决这个问题。改源码看起来挺麻烦。

在daocloud.io的php镜像列表中找了好久,貌似也没有最新版本的,坑!

那么,去docker官网看看吧。

虽然网速慢,但还是能成功的,从docker官网下载了个php:7.2.28-apache (当前php7.2的最新版本)

按上面相同的步骤安装扩展,没有再出现那个错误,算是初步测试成功。

又作了些默认配置及目录调整,最终docker配置参见


ShirneCMS Dockerfile


开发的话,目前的思路是创建容器后将工作文件拷贝进容器,代码用vscode的远程插件做开发测试,更新时拷贝出来同步git