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

其他擴展與此雷同

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: