当前位置: 首页 > 后端技术 > PHP

Dockerfile搭建PHP8镜像&&docker-compose搭建LNMP环境

时间:2023-03-29 22:56:01 PHP

使用Dockerfile搭建PHP8镜像编写DockerfilevimDockerfileFROMphp:8.1.0RC5-fpm-busterMAINTAINERitxiaoma#buster是基于DebianLinux像PHP和Python等语言都会使用这个版本的Debian来构建Docker基础镜像。#docker中php扩展安装方法#1、PHP源码文件目录自带扩展docker-php-ext-install直接安装#2、pecl扩展因为有些扩展没有包含在PHP源码文件中,存在于PHP的扩展库中仓库。使用peclinstall安装扩展,然后使用docker-php-ext-enable命令启用扩展#3。其他扩展,有些扩展既不在PHP源码包中,也不在PECL扩展仓库中。可以下载扩展源码并编译安装安装方式#redis扩展仓库地址https://pecl.php.net/package/redisENVPHPREDIS_VERSION5.3.4#memcached扩展仓库地址https://pecl.php。net/package/memcachedENVMEMCACHED_VERSION3.1.5#mongodbextendedhttps://pecl.php.net/package/mongodbENVMONGODB_VERSION1.11.1#settimeRUN/bin/cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\&&echo'Asia/Shanghai'>/etc/timezone#ExtendeddependenciesRUNapt-getupdate\&&apt-getinstall-y\vim\curl\wget\git\zip\libz-dev\libssl-dev\libnghttp2-dev\libpcre3-dev\libmemcached-dev\zlib1g-dev\&&apt-getclean\&&apt-getautoremove#Composer安装运行curl-sShttps://getcomposer.org/installer|php\&&mvcomposer.phar/usr/local/bin/composer\&&composerself-update--clean-backups#可以直接安装Mysqli扩展(当前数据库使用的mysqli查询)RUNdocker-php-ext-installmysqli#可以直接安装PDO扩展RUNdocker-php-ext-installpdo_mysql#BcmathextensionfromRUNdocker-php-ext-installbcmath#Redis扩展下载pecl本地安装打开扩展RUNwgethttp://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz-O/tmp/redis.tgz\&&peclinstall/tmp/redis.tgz\&&rm-rf/tmp/redis.tgz\&&docker-php-ext-enableredis#memcachedextension下载pecl本地安装openextension已经通过apt-get安装,之前libmemcached-dev依赖RUNwgethttp://pecl.php.net/get/memcached-${MEMCACHED_VERSION}.tgz-O/tmp/memcached.tgz\&&peclinstall/tmp/memcached.tgz\&&rm-rf/tmp/memcached.tgz\&&docker-php-ext-enablememcached#mongodbextension下载pecl本地安装开启extension之前已经通过RUNwgethttp://pecl.php.net/get/mongodb-${MONGODB_VERSION}.tgz-O/tmp/mongodb.tgz\&&peclinstall/tmp/mongodb.tgz\&&rm-rf/tmp/mongodb.tgz\&&docker-php-ext-enablemongodb#打开php-fpmRUNphp-fpm提交镜像dockerbuild-fDockerfile-titxiaoma/php8:1.0.dockerlogin-uitxiaomadockerpushitxiaoma/php8:1.0使用docker-compose搭建LNMP环境编写docker-compose文件vimdocker-compose。ymlversion:'3.5'services:nginx:image:nginx:alpinerestart:alwaysvolumes:-./config/nginx:/etc/nginx/conf.d-./logs/nginx:/var/log/nginx-./工作空间:/工作空间端口:-80:80-443:443php:image:itxiaoma/php8:1.0重新启动:始终命令:php-fpmvolumes:-./workspace:/workspacestdin_open:truetty:truedbm:image:mysql:8.0.26命令:--default-authentication-plugin=mysql_native_password重启:始终环境:MYSQL_ROOT_PASSWORD:xxx卷:-'./storage/mysql:/var/lib/mysql'端口:-3306:3306dbr:image:redis:alpine重启:始终卷:-'./storage/redis:/data'端口:-6379:6379命令:redis-server--requirepassxxx--appendonlyyesdns:image:jpillora/dnsmasqports:-53:53/udp-5380:8080volumes:-'./config/dns/dnsmasq.conf:/etc/dnsmasq.conf'编辑Nginx配置vimcinfig/nginx/test.confserver{听80;服务器名称lnmp.test;索引index.php;字符集utf-8;location/{try_files$uri$uri//index.php?$query_string;}location~\.php${fastcgi_passphp:9000;fastcgi_paramSCRIPT_FILENAME/workspace/xxx/public/$fastcgi_script_name;包括fastcgi_params;}location~/\.(?!well-known).*{denyall;}}配置DNSvimconfig/dns/dnsmasq。conflog-queriesno-resolvserver=223.5.5.5server=223.6.6.6address=/.test/127.0.0.1注:53为域名解析端口,5380为DNS可视化页面,生产环境不需要dns执行docker-编写参考资料:通过docker自定义安装php7.x并安装sourceextensions,peclextensions,andotherextensions