安装 PHP 镜像
方法一、docker pull php
查找Docker Hub上的php镜像
runoob@runoob:~/php-fpm$dockersearchphpNAMEDESCRIPTIONSTARSOFFICIALAUTOMATEDphpWhiledesignedforwebdevelopment,thePH...1232[OK]richarvey/nginx-php-fpmContainerrunningNginx+PHP-FPMcapable...207[OK]phpmyadmin/phpmyadminAwebinterfaceforMySQLandMariaDB.123[OK]eboraas/apache-phpPHP5onApache(withSSLsupport),builto...69[OK]php-zendserverZendServer-theintegratedPHPapplicati...69[OK]million12/nginx-phpNginx+PHP-FPM5.5,5.6,7.0(NG),CentOS...67[OK]webdevops/php-nginxNginxwithPHP-FPM39[OK]webdevops/php-apacheApachewithPHP-FPM(basedonwebdevops/php)14[OK]phpunit/phpunitPHPUnitisaprogrammer-orientedtestingf...14[OK]tetraweb/phpPHP5.3,5.4,5.5,5.6,7.0forCIandrun...12[OK]webdevops/phpPHP(FPMandCLI)servicecontainer10[OK]...
这里我们拉取官方的镜像,标签为5.6-fpm
runoob@runoob:~/php-fpm$dockerpullphp:5.6-fpm
等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为5.6-fpm的镜像。
runoob@runoob:~/php-fpm$dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEphp5.6-fpm025041cd3aa56daysago456.3MB
方法二、通过 Dockerfile 构建
创建Dockerfile
首先,创建目录php-fpm,用于存放后面的相关东西。
runoob@runoob:~$mkdir-p~/php-fpm/logs~/php-fpm/conf
logs目录将映射为php-fpm容器的日志目录
conf目录里的配置文件将映射为php-fpm容器的配置文件
进入创建的php-fpm目录,创建Dockerfile
FROMdebian:jessie#persistent/runtimedepsENVPHPIZE_DEPSautoconffileg++gcclibc-devmakepkg-configre2cRUNapt-getupdate&&apt-getinstall-y$PHPIZE_DEPSca-certificatescurllibedit2libsqlite3-0libxml2--no-install-recommends&&rm-r/var/lib/apt/lists/*ENVPHP_INI_DIR/usr/local/etc/phpRUNmkdir-p$PHP_INI_DIR/conf.d##<autogenerated>##ENVPHP_EXTRA_CONFIGURE_ARGS--enable-fpm--with-fpm-user=www-data--with-fpm-group=www-data##</autogenerated>##ENVGPG_KEYS0BD78B5F97500D450838F95DFE857D9A90D90EC16E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3ENVPHP_VERSION5.6.22ENVPHP_FILENAMEphp-5.6.22.tar.xzENVPHP_SHA256c96980d7de1d66c821a4ee5809df0076f925b2fe0b8c362d234d92f2f0a178e2RUNset-xe&&buildDeps="$PHP_EXTRA_BUILD_DEPSlibcurl4-openssl-devlibedit-devlibsqlite3-devlibssl-devlibxml2-devxz-utils"&&apt-getupdate&&apt-getinstall-y$buildDeps--no-install-recommends&&rm-rf/var/lib/apt/lists/*&&curl-fSL"http://php.net/get/$PHP_FILENAME/from/this/mirror"-o"$PHP_FILENAME"&&echo"$PHP_SHA256*$PHP_FILENAME"|sha256sum-c-&&curl-fSL"http://php.net/get/$PHP_FILENAME.asc/from/this/mirror"-o"$PHP_FILENAME.asc"&&exportGNUPGHOME="$(mktemp-d)"&&forkeyin$GPG_KEYS;dogpg--keyserverha.pool.sks-keyservers.net--recv-keys"$key";done&&gpg--batch--verify"$PHP_FILENAME.asc""$PHP_FILENAME"&&rm-r"$GNUPGHOME""$PHP_FILENAME.asc"&&mkdir-p/usr/src/php&&tar-xf"$PHP_FILENAME"-C/usr/src/php--strip-components=1&&rm"$PHP_FILENAME"&&cd/usr/src/php&&./configure--with-config-file-path="$PHP_INI_DIR"--with-config-file-scan-dir="$PHP_INI_DIR/conf.d"$PHP_EXTRA_CONFIGURE_ARGS--disable-cgi#--enable-mysqlndisincludedherebecauseit'shardertocompileafterthefactthanextensionsare(sinceit'sapluginforseveralextensions,notanextensioninitself)--enable-mysqlnd#--enable-mbstringisincludedherebecauseotherwisethere'snowaytogetpecltouseitproperly(seehttps://github.com/docker-library/php/issues/195)--enable-mbstring--with-curl--with-libedit--with-openssl--with-zlib&&make-j"$(nproc)"&&makeinstall&&{find/usr/local/bin/usr/local/sbin-typef-executable-execstrip--strip-all'{}'+||true;}&&makeclean&&apt-getpurge-y--auto-remove-oAPT::AutoRemove::RecommendsImportant=false-oAPT::AutoRemove::SuggestsImportant=false$buildDepsCOPYdocker-php-ext-*/usr/local/bin/##<autogenerated>##WORKDIR/var/www/htmlRUNset-ex&&cd/usr/local/etc&&if[-dphp-fpm.d];then#forsomereason,upstream'sphp-fpm.conf.defaulthas"include=NONE/etc/php-fpm.d/*.conf"sed's!=NONE/!=!g'php-fpm.conf.default|teephp-fpm.conf>/dev/null;cpphp-fpm.d/www.conf.defaultphp-fpm.d/www.conf;else#PHP5.xdon'tuse"include="bydefault,sowe'llcreateourownsimpleconfigthatmimicsPHP7+forconsistencymkdirphp-fpm.d;cpphp-fpm.conf.defaultphp-fpm.d/www.conf;{echo'[global]';echo'include=etc/php-fpm.d/*.conf';}|teephp-fpm.conf;fi&&{echo'[global]';echo'error_log=/proc/self/fd/2';echo;echo'[www]';echo';ifwesendthisto/proc/self/fd/1,itneverappears';echo'access.log=/proc/self/fd/2';echo;echo'clear_env=no';echo;echo';Ensureworkerstdoutandstderraresenttothemainerrorlog.';echo'catch_workers_output=yes';}|teephp-fpm.d/docker.conf&&{echo'[global]';echo'daemonize=no';echo;echo'[www]';echo'listen=[::]:9000';}|teephp-fpm.d/zz-docker.confEXPOSE9000CMD["php-fpm"]
通过Dockerfile创建一个镜像,替换成你自己的名字
runoob@runoob:~/php-fpm$dockerbuild-tphp:5.6-fpm.
创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像
runoob@runoob:~/php-fpm$dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEphp5.6-fpm025041cd3aa56daysago456.3MB
使用php-fpm镜像
运行容器
runoob@runoob:~/php-fpm$dockerrun-p9000:9000--namemyphp-fpm-v~/nginx/www:/www-v$PWD/conf:/usr/local/etc/php-v$PWD/logs:/phplogs-dphp:5.6-fpm00c5aa4c2f93ec3486936f45b5f2b450187a9d09acb18f5ac9aa7a5f405dbedfrunoob@runoob:~/php-fpm$
命令说明:
-p 9000:9000 :将容器的9000端口映射到主机的9000端口
--name myphp-fpm :将容器命名为myphp-fpm
-v ~/nginx/www:/www :将主机中项目的目录www挂载到容器的/www
-v $PWD/conf:/usr/local/etc/php :将主机中当前目录下的conf目录挂载到容器的/usr/local/etc/php
-v $PWD/logs:/phplogs :将主机中当前目录下的logs目录挂载到容器的/phplogs
查看容器启动情况
runoob@runoob:~/php-fpm$dockerpsCONTAINERIDIMAGECOMMAND...PORTSNAMES00c5aa4c2f93php:5.6-fpm"php-fpm"...0.0.0.0:9000->9000/tcpmyphp-fpm
通过浏览器访问phpinfo()
PS:此处是通过nginx+php实现web服务,nginx配置文件的fastcgi_pass应该配置为myphp-fpm容器的IP。
fastcgi_pass172.17.0.4:9000;
知识推荐
- .Net Core 依赖注入
- apache缺少模块解决方法
- 用vue-cli创建的项目没有webpack相关文件的解决办法
- js 把json字符串转为json对象
- 巧用PHP中__get()魔术方法
- 【源码】进入ASP.NET MVC流程的大门 - UrlRoutingModule
- nginx反向代理tomcat8和php7(四)
- HTML5获取地理经纬度并通过百度接口得到实时位置
- AngularJS ?src ?ng-src的区别
- ThinkPHP 快速入门
- 【咸鱼教程】protobuf在websocket通讯中的使用
- php判断该月有多少天
- js为一个对象Object添加一个新的属性和值
- 记一次PHP实现JS的无符号右移(>>>)
- AngularJS DI(依赖注入)实现推测
- ajax介绍
- 使用html2canvas生成一张图片
- 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)