目标:制作镜像(php+nginx加部分扩展)
环境:centos7 docker 17.11
使用的基础镜像为:webdevops/php-nginx:centos-7-php56
之前使用过其他镜像如:php:5.6.32-fpm
该镜像没有安装mysqli扩展:需要在Dockerfile中 加上:
RUN docker-php-ext-install mysqli
webdevops/php-nginx:centos-7-php56已经默认安装了mysqli,
开发环境还需要amqp和redis扩展
在Dockerfile同目录下下载amqp-1.4.0.tgz文件
wget http://pecl.php.net/get/amqp-1.4.0.tgz
下载phpredis-master.zip
wget https://github.com/nicolasff/phpredis/archive/master.zip
1.运行基本镜像:
docker run -d -p 80:80 -name demo webdevops/php-nginx:centos-7-php56
2.拷贝所需文件:
docker cp amqp-1.4.0.tgz demo:/tmp/amqp-1.4.0.tgz
docker cp phpredis-master.zip demo:/tmp/phpredis-master.zip
3.进入容器 demo:
docker exec -it demo bash
进入容器后:依次执行以下命令安装amqp和redis扩展
yum install gcc php56w-devel -y
tar -zxvf /tmp/amqp-1.4.0.tgz
rm /tmp/amqp-1.4.0.tgz
cd /tmp/amqp-1.4.0
phpize
./configure --with-amqp
make
make install
echo "extension=amqp.so" > /etc/php.ini
rm -r /tmp/amqp-1.4.0
yum install librabbitmq-devel.x86_64 -y
cd /tmp
unzip /phpredis-master.zip
rm /phpredis-master.zip
cd /phpredis-master
phpize
./configure -with-php-config=/usr/bin/php-config
make
make install
echo "extension=redis.so" > /etc/php.ini
rm -r /tmp/phpredis-master
在执行yum install 命令时,我的环境中遇到了错误:
Could not retrieve mirrorlist https://mirror.webtatic.com/yum/el7/x86_64/mirrorlist error was
12: Timeout on https://mirror.webtatic.com/yum/el7/x86_64/mirrorlist: (28, 'Operation timed out after 30002 milliseconds with 0 out of 0 bytes received')
之后替换CentOS-Base.repo后可以正确执行yum命令
具体步骤:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
运行以下命令生成缓存
yum clean all
yum makecache
具体查看参考文章3
镜像制作好了,如何部署到环境呢?请看下篇,查看如何使用:k8s部署php镜像
参考文章:
1.http://blog.csdn.net/super_rd/article/details/70574782
2.http://blog.51cto.com/yanshisan/1377992
3.http://blog.csdn.net/wdy_2099/article/details/70578529