分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

docker安装php

发布时间:2023-09-06 02:04责任编辑:林大明关键词:暂无标签
Docker 安装 PHP

安装 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;

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved