Loading... # 背景 前段时间看到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.yml` ```yaml version: '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](https://https//github.com/mlocati/docker-php-extension-installer) 具体可以看我之前的介绍[`利用install-php-extensions构建自己的php-docker镜像`](https://imgki.com/archives/744.html) 那么,下面我们来重新构建镜像。 ### 准备dockerfile 指定`dockerfile-wp`作为构建的文件,这个是为了重新构建镜像,存放在docker-compose.yml同层级目录。 ```yaml 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/local/etc/php/conf.d ``` ### 修改`docker-compose.yml` 在`docker-compose.yml`中关于wordpress部分修改成这样,重新构建的镜像会被命名为wordpress-rebld ```yaml wordpress: build: context: . dockerfile: dockerfile-wp image: wordpress-rebld restart: always ports: - 8083:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: - ./wp:/var/www/html ``` ## 调整上传限制 官方镜像原来设置的上传限制为**2M**,这个对于很多人来说附件都太小了,因此需要调整php.ini中的配置。以下在构建镜像的时候一块进行调整。 ### 准备uploads.ini 这个配置文件描述了上传文件大小的限制,存放在`docker-compose.yml`同层级目录。 ```yaml file_uploads = On memory_limit = 64M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 600 ``` ### 准备dockerfile文件 因为需要重新构建镜像,因此需要准备一个`dockerfile`文件,我命名为`dockerfile-wp`,存放在`docker-compose.yml`同层级目录。 ```yaml FROM wordpress LABEL maintainer="https://imgki.com" #upload.ini max_upload COPY ./uploads.ini /usr/local/etc/php/conf.d ``` ### 修改docker-composel.yml 在`docker-compose.yml`中关于wordpress部分修改成这样 ```yaml wordpress: build: context: . dockerfile: dockerfile-wp image: wordpress-rebld restart: always ports: - 8083:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: - ./wp:/var/www/html ``` # Nginx反代 `平时在自己的服务器上跑了很多服务,而且是用习惯了docker跑,对外开放的端口都是自设,为了统一管理域名+SSL,之前都是用宝塔或者lnmp比较方便,如果愿意折腾用Nginx-docker,就是稍微麻烦点。` ## 项目 地址:[https://github.com/jc21/nginx-proxy-manager](https://github.com/jc21/nginx-proxy-manager) 官网:[https://nginxproxymanager.com/](https://nginxproxymanager.com/) > 具体看我前期的教程:[`非常方便的Nginx反向代理项目nginx-proxy-manager`](https://imgki.com/archives/602.html) Last modification:October 18, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏