docker 编辑Dockerfile 添加php7.2 acpu的问题
作者:可以吧可以吧
这篇文章主要介绍了docker 编辑Dockerfile 添加php7.2 acpu问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
docker 编辑Dockerfile 添加php7.2 acpu
直接编辑Dockerfile
ARG INSTALL_APCU=false RUN if [ ${INSTALL_APCU} = true ]; then \ # Install Php apcu Extension apk add apcu \ && pecl install https://pecl.php.net/get/apcu-5.1.13.tgz apcu.tgz \ && docker-php-ext-enable apcu \ ;fi
执行
docker-compose up --build web
等待安装即可
需要安装其他扩展,自己去pecl上面查找对应的php版本的包安装即可
地址:https://pecl.php.net/package/APCu
Dockerfile基于镜像php:7.2-fpm构建自定义php7.2镜像
构建可以ssh连接、有基本命令、并且有zip pdo pdo_mysql curl redis 等扩展的php7.2镜像
- 以下代码需要写在Dockerfile文件中,并且已安装docker命令
- 在Dockerfile所在目录下,执行构建镜像命令即可开始构建:docker build -t hengda/php7.2-fpm:v1 .
docker-php-ext 方式安装
FROM php:7.2-fpm RUN apt-get update \ #cp -r /etc/apt/sources.list /etc/apt/sources.list.bak \ #修改软件源 # #&& echo "deb http://mirrors.aliyun.com/debian/ wheezy main non-free contrib" > /etc/apt/sources.list \ #&& echo "deb http://mirrors.aliyun.com/debian/ wheezy-proposed-updates main non-free contrib" >> /etc/apt/sources.list \ #&& echo "deb-src http://mirrors.aliyun.com/debian/ wheezy main non-free contrib" >> /etc/apt/sources.list \ #&& echo "deb-src http://mirrors.aliyun.com/debian/ wheezy-proposed-updates main non-free contrib" >> /etc/apt/sources.list \ # #&& apt-get update \ #切换目录 && cd /tmp \ #安装sudo && apt-get install sudo -y \ #安装vim文本编辑器 && apt-get install vim -y \ #安装wget下载工具 && apt-get install wget -y \ #安装网络管理工具 && apt-get install net-tools -y \ #安装ping && apt-get install iputils-ping -y \ #安装telnet && apt-get install telnet -y \ #安装进程管理命令ps, top, vmstat, w, kill, free, slabtop, and skill && apt-get install procps -y \ #安装C/C++编译包,该软件包,编译c/c++所需要的软件包也都会被安装。 #该包包含gcc,g++,make等` && apt-get install build-essential -y \ #安装zip依赖 zlib && apt-get install zlib1g-dev -y \ #安装zip && bash -c "apt-get install unzip -y;" \ #安装openssh-server 即sshd && apt install -y openssh-server -y \ #给root用户设置初始密码123456 && echo "root:123456" | chpasswd \ #修改配置项 PermitRootLogin #&& sed 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp \ #&& cat /etc/ssh/sshd_config.tmp > /etc/ssh/sshd_config \ #修改配置项 UsePAM #&& sed 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp \ #&& cat /etc/ssh/sshd_config.tmp > /etc/ssh/sshd_config \ #同时修改配置项PermitRootLogin 和UsePAM #&& sed 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp \ #&& sed 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config.tmp > /etc/ssh/sshd_config \ && sed -i 's/#PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config \ && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \ && sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config \ ################################ # # 用docker-php-ext-install 命令安装php扩展(安装/usr/src/php/ext/目录下的扩展,不存在的可以下载扩展安装包放入该目录,然后再执行/usr/local/bin/docker-php-ext-install xxx 安装) # # curl扩展需要以下扩展包 && apt-get install libcurl4-openssl-dev -y \ # # bz2扩展(bzip2)需要以下扩展包,安装 bzip2 bzip2-devel 否则下面的docker-php-ext-install 安装bz2扩展会报错: configure: error: Please reinstall the BZip2 distribution && apt-get install bzip2 -y \ && apt-get install libbz2-dev -y \ # # redis扩展没有离线包,需要先下载解压移动到/usr/src/php/ext/目录下 && cd /tmp \ && curl -L -o phpredis-5.0.2.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 \ && tar -xzvf phpredis-5.0.2.tar.gz \ && rm -f phpredis-5.0.2.tar.gz \ # #解压后移动到/usr/src/php/ext目录下 && mkdir -p /usr/src/php/ext/ \ && mv phpredis-5.0.2 /usr/src/php/ext/redis \ # # 开始安装php这些php扩展 && /usr/local/bin/docker-php-ext-install zip pdo pdo_mysql curl redis \ ################################ # 扩展所在目录: #Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20131226/ # php的扩展目录在 /usr/local/lib/php/extensions/no-debug-non-zts-20170718 #配置 #cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini #vim /usr/local/etc/php/php.ini #然后添加配置项extension=zip.so即可 ################################ #安装composer命令 #下载composer.phar #&& php -r "readfile('https://getcomposer.org/installer');" | php \ #给composer.phar赋可执行权限 #将composer.phar复制到/bin/目录下并重命名为composer #&& mv composer.phar /bin/composer \ #修改权限,否则执行会报错 #&& chmod -R 777 /bin/composer \ #查看composer版本 #composer -v #修改composer镜像源地址为国内地址 #&& composer config -g repo.packagist composer https://packagist.phpcomposer.com \ ################################ #composer安装laravel #composer global require laravel/installer && echo "安装完毕!" \
pecl方式安装
以上扩展通过pecl方式安装:
##php-zip#################################################### # 安 装 php 扩展 php-zip(zip) # 切换目录到 /tmp && cd /tmp \ # 下载扩展包 && wget http://qinqinxia.com/zip-1.13.5.tgz \ # && wget http://pecl.php.net/get/zip-1.13.5.tgz \ # 解压 && tar -zvxf zip-1.13.5.tgz \ # 删除压缩包 && rm -f zip-1.13.5.tgz \ # 解压后复制到目录 /usr/local/src && mv zip-1.13.5 /usr/local/src \ # 切换目录到 /usr/local/src/zip-1.13.5 && cd /usr/local/src/zip-1.13.5 \ && /usr/local/bin/phpize \ && ./configure --with-php-config=/usr/local/bin/php-config \ && make && make install \ # ##pdo_mysql################################################# # 安 装 php 扩展 pdo_mysql # 切换到 tmp 目录 && cd /tmp \ #下 载 php-mysql && wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz \ # 解压 && tar -xzvf PDO_MYSQL-1.0.2.tgz \ && rm -f PDO_MYSQL-1.0.2.tgz \ # 解压后移动到 /usr/local/src && mv PDO_MYSQL-1.0.2 /usr/local/src \ # 切换到目录 /usr/local/src/PDO_MYSQL-1.0.2 && cd /usr/local/src/PDO_MYSQL-1.0.2 \ # 安装 php-mysql && /usr/local/bin/phpize \ && ./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/bin/mysql \ && make && make install \ # ##redis############################################# # 安装 php 扩展 redis # 下载 && cd /tmp \ && curl -L -o phpredis-5.0.2.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 \ && tar -xzvf phpredis-5.0.2.tar.gz \ && rm -f phpredis-5.0.2.tar.gz \ # 解压后移动到 /usr/local/src && mv phpredis-5.0.2 /usr/local/src \ && cd /usr/local/src/phpredis-5.0.2 \ && /usr/local/bin/phpize \ && ./configure --with-php-config=/usr/local/bin/php-config \ && make && make install
其他扩展与此雷同
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。