Docker Wordpress 超级慢

Eri*_*Ven 8 macos wordpress performance docker

我在 Docker 内部运行 Wordpress,用于本地开发,而且速度非常慢。我的 docker-compose.yml 看起来像这样:

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql
      - ./dbconfig.cnf:/etc/mysql/conf.d/custom.cnf
    restart: always
    ports:
      - "3308:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wp_database
      MYSQL_USER: db_user
      MYSQL_PASSWORD: some_secure_password

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "80:80"
      - "443:443"
    restart: always
    volumes:
      - ./wp-content:/var/www/html/wp-content
      - ./.htaccess:/var/www/html/.htaccess
      - ./wp-config.php:/var/www/html/wp-config.php
      - ./logs/debug.log:/var/www/html/wp-content/debug.log
volumes:
  db_data: {}
  wp_content: {}
Run Code Online (Sandbox Code Playgroud)

就我在线阅读而言,这可能是我安装wp-content卷的原因,这导致页面加载速度超慢(加载每个文件需要半秒,例如 jquery 文件,并且它必须加载大量文件一页)。

有解决方案吗?我读过有关 NFS 的信息,但是使用 docker-compose 配置 NFS 对我来说不起作用,不知何故我不断收到“权限错误”。另一方面,macOS 的 Docker 界面已经向我显示了一个“共享文件夹”选项卡,但我不知道我目前是在使用这些共享文件夹还是只是再次安装它们。

任何帮助表示赞赏。

mol*_*vec 11

在 Mac 和 Windows 中,我们应该考虑一些卷性能问题。

我改变了我的docker-compose.yml

请注意,我将短语法更改为长语法

该表示法允许添加consistency option

我添加了wp-contentphp-conf(以获取 php.ini),因为它们是每次在浏览器中加载 Wordpress 页面时最常调用的文件目录。

services:
    wordpress:

        ...

        volumes:
            - ./data:/data
            - ./scripts:/docker-entrypoint-initwp.d
            #- ./wp-content:/app/wp-content
            - type: bind
              source: ./wp-content
              target: /app/wp-content
              consistency: cached
            #- ./php-conf:/usr/local/etc/php
            - type: bind
              source: ./php-conf
              target: /usr/local/etc/php
              consistency: cached
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Arm*_*yan 9

TL;DR 挂载到容器上的临时文件夹,将该文件夹与 Bindfs 同步到公共服务器文件夹。直接挂载服务 WP 站点很慢,因为容器必须一个一个访问 Host 文件,这是一个繁重的过程。当文件直接属于容器时,从公共文件夹提供服务要快得多。

我在 Docker Compose 开发中遇到了与本地 WordPress 完全相同的问题。无论您的计算机有多快,在容器中安装文件夹时它仍然会很慢。

我还尝试了 NFS 之类的解决方案和其他建议,例如在防病毒软件中正确排除项目、添加 .dockerignore 等,这些建议充其量只是稍微提高了性能。

在浏览类似的速度改进时,我在 WordPress Starter 存储库中遇到了这个 Dockerfile https://github.com/visiblevc/wordpress-starter/blob/master/Dockerfile. 如果您查看此文件,您会发现它们初始化并在容器中挂载项目的方式是将其挂载到而不是直接挂载到 /var/www/html/,而是挂载到临时文件夹。然后他们通过 bindfs 将此临时文件夹同步到 /var/www/html/。这样,每次您在浏览器中加载 WordPress 页面时,它都会快如闪电,因为它不必在每次请求时访问和读取主机文件。WordPress 文件是 Linux 容器的一部分。当您对代码进行更改时,这些更改将反映在容器临时文件夹中,并且 bindfs 将立即将这些更改同步到公共容器文件夹,反之亦然。在公共文件夹上所做的所有更改都将同步到临时文件夹,并从那里同步到您的主机项目文件。

  • 那将是 404 (7认同)
  • 您只需要及时返回以找到发布日期附近的存储库即可找到 @ArmanShahinyan 建议的 dockerfile:https://github.com/visiblevc/wordpress-starter/blob/cd7a3c4dc1dacdfb247fa6a86001cf6909734c87/Dockerfile (2认同)