制作php+nginx环境镜像

目标:制作镜像(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扩展

  1. amqp扩展

在Dockerfile同目录下下载amqp-1.4.0.tgz文件

wget http://pecl.php.net/get/amqp-1.4.0.tgz
  1. redis扩展

下载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

你可能感兴趣的:(go,PHP,linux)