爱墨迹 - php
type: channel
link: https://imgki.com/tag/php/
items: Docker部署Wordpress+Mysql|配置PHP扩展
items: 利用install-php-extensions构建自己的php-docker镜像

Docker部署Wordpress+Mysql|配置PHP扩展
type: item
date: 2023-09-29T08:02:00+08:00
description: 背景前段时间看到LNMP居然被军哥给卖了，一方面让人感到惋惜，毕竟用了这么多年了，而且军哥也是坚持了这么多年了，就这么放弃了。另外一方面也感受到，这种lnmp架构对比现在的docker-compose确实有很多不方便的地方，比如搬家的时候我要备份、迁移....，但是在docker-compose连同文件夹带走一条命令就重新起来了。正好近期在折腾NAS，从ESxi全部迁移到PVE，利用PVE的CT模板重新搭建了Debain，把所有的wp全部搬迁到这里。以下通过docker-compose部署wordpress\mysql\phpmyadmin，并通过Nginx反向代理项目nginx-proxy-manager反代部署。部署因为需要同时部署wordpress\mysql\phpmyadmin，强烈建议通过compose部署。安装docker和docker-compose的过程略过。docker新版本自带了docker compose命令，可以替换docker-compose，所以我就不装docker-compoe了。准备docker-compose.ymlversion: '3.1' services: wordpress: image: wordpress restart: always container_name: wp ports: - 8080:80 environment: #修改以下db配置 WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: - ./wp:/var/www/html links: - db db: image: mysql:5.7 restart: always tainer_name: wp_db environment: #修改以下db配置 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress MYSQL_ROOT_PASSWORD: wordpress_root volumes: - ./db/conf.d:/etc/mysql/conf.d - ./db/data:/var/lib/mysql dbweb: image: phpmyadmin restart: always ports: - 8098:80 links: - db之后运行docker compose up -d 跑起来服务。下面解读一下这个配置：Wordpress：默认端口8080，这样每个站我用一个独立的端口，之后用NMP反代。volumes挂载同目录下的wp文件夹，映射wordpress的根目录。Mysql：没有开放端口到宿主机，MYSQL_ROOT_PASSWORD是默认root密码MYSQL_DATABASE/MYSQL_USER/MYSQL_PASSWORD是wp使用的账户密码Phpmyadmin：端口8098其他配置增加PHP扩展有些wp需要开启php扩展，但是在docker里面就非常麻烦，这里推荐前期一个配置模块install-php-extensions项目地址：https://github.com/mlocati/docker-php-extension-installer具体可以看我之前的介绍利用install-php-extensions构建自己的php-docker镜像那么，下面我们来重新构建镜像。准备dockerfile指定dockerfile-wp作为构建的文件，这个是为了重新构建镜像，存放在docker-compose.yml同层级目录。FROM wordpress LABEL maintainer="https://imgki.com" #Add own Extentions ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN chmod +x /usr/local/bin/install-php-extensions && sync RUN install-php-extensions mysqli pdo_mysql gd exif imagick zip fileinfo iconv IMAP #upload.ini max_upload COPY ./conf/uploads.ini /usr/loc…

利用install-php-extensions构建自己的php-docker镜像
type: item
date: 2023-02-09T14:19:00+08:00
description: 需求docker官方的php镜像一般很少能直接用，因为很多扩展都没有，比如php;7.4.16-fpm镜像通过run启动后，默认没有启用mysqli模块，很多时候我们都需要根据需要来启用某些php扩展，所以一般都需要在官方的基础上进行重构。但是看了一些重构的教程都比较麻烦，今天发现这么一个项目install-php-extensionsinstall-php-extensions项目项目地址：https://github.com/mlocati/docker-php-extension-installer构建项目编写DockerfileFROM php:7.4.16-fpm LABEL maintainer="https://imgki.com" ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN chmod +x /usr/local/bin/install-php-extensions && sync #这里加上你要编译的模块 RUN install-php-extensions mysqli pdo_mysql gd exif imagick zip 构建镜像docker build -t my-php:7.4.16-fpm .之后很快构建完成，可以用docker images查看新构建的镜像有可以用docker run --rm php_my:7.4.16-fpm php -m查看包含的扩展其他说明Supported PHP extensions支持列表官方github这里可以查看具体支持的列表，php版本和扩展的支持情况https://github.com/mlocati/docker-php-extension-installer#supported-php-extensionsSpecial requirements特别要求有些扩展是有特殊要求的https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions