wordpress - WordPress 的 Docker 慢

标签 wordpress docker docker-compose

问题:

我在使用 WordPress 和 Docker 时遇到问题,因为我的网站加载时间很慢(+- 7 秒)。我不确定为什么会这样,但我认为这与外部数据库或共享卷有关。

设置:

我有一个使用 XDebug 和 Mailhog 在 WordPress 上构建的自定义 Dockerfile。这个 Dockerfile 包含在我的 docker-compose.yml 中,我的 docker-compose 包含的其他服务是 WP-CLI 和 Mailhog。我的数据库托管在 Amazon RDS 上,因此我可以与同事共享它。

代码:

我的 Dockerfile 如下所示:

FROM wordpress:latest

# Plugins & Media
RUN mkdir -p /var/www/html/wp-content/plugins
RUN mkdir -p /var/www/html/wp-content/uploads

RUN chown -R www-data:www-data /var/www

RUN find /var/www/ -type d -exec chmod 0755 {} \;
RUN find /var/www/ -type f -exec chmod 644 {} \;

# Mailhog
RUN curl --location --output /usr/local/bin/mhsendmail https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 && \
    chmod +x /usr/local/bin/mhsendmail

RUN echo 'sendmail_path="/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025 --from=noreply@examle.com"' > /usr/local/etc/php/conf.d/mailhog.ini

# Xdebug
ENV XDEBUG_PORT 9000

RUN yes | pecl install xdebug \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.profiler_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.profiler_output_name=cachegrind.out.%t" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.profiler_output_dir=/tmp" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "max_input_vars=2000" >> /usr/local/etc/php/conf.d/custom.ini \
    && rm -rf /usr/local/etc/php/conf.d/opcache-recommended.ini

EXPOSE 9000

我的 Docker-compose.yml 看起来像这样:

version: "3.7"
services:
    wordpress:
        container_name: "${PROJECT_NAME}_wordpress"
        restart: always
        build:
            context: ./
            dockerfile: ./Dockerfile
        ports:
            - "8888:80"
            - "443:443"
        environment:
            WORDPRESS_DB_NAME: "${PROJECT_NAME}"
            WORDPRESS_DB_HOST: "${MYSQL_HOST}"
            WORDPRESS_DB_USER: "${MYSQL_USER}"
            WORDPRESS_DB_PASSWORD: "${MYSQL_PASSWORD}"
            WORDPRESS_DEBUG: 1
            XDEBUG_CONFIG: remote_host=host.docker.internal
            WORDPRESS_CONFIG_EXTRA: |
                define('FS_METHOD', 'direct');
        volumes:
            - "wordpress:/var/www/html"
            - "./build/uploads:/var/www/html/wp-content/uploads:cached"
            - "./build/plugins:/var/www/html/wp-content/plugins:cached"
            - "./build/themes:/var/www/html/wp-content/themes:cached"
    cli:
        container_name: "${PROJECT_NAME}_cli"
        image: "wordpress:cli"
        volumes:
            - "wordpress:/var/www/html"
            - "./build/plugins:/var/www/html/wp-content/plugins:cached"
        depends_on:
            - wordpress
    mailhog:
        container_name: "${PROJECT_NAME}_mailhog"
        image: mailhog/mailhog
        depends_on:
            - wordpress
        ports:
            - "1025:1025"
            - "8025:8025"
volumes:
    wordpress: null

但是我找不到为什么这么慢;我获得了 2.1.09.3 版的 Docker Desktop 并在快速的 Mac 或 Windows 上工作。

有人可以帮助我或指出正确的方向吗?

编辑

  1. 如果我查看 docker 统计信息,我的 CPU 大约为 0.01%,我的 MEM 大约为 2.73%,所以这不是问题所在。
  2. 发现最大的问题是连接到外部数据库。如果我转移到本地数据库,加载时间会快很多(+- 1 秒)。

最佳答案

Mac 和 Windows 音量性能存在一些问题。

更多详情链接:

Docker Wordpress super slow


在 Mac 和 Windows 中有一些 volumes performance issues我们应该考虑。

我在我的 docker-compose.yml 中进行了更改

请注意,我更改了 short syntax to long syntax .

此表示法允许添加一致性选项

我添加了 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

关于wordpress - WordPress 的 Docker 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58392376/

相关文章:

amazon-web-services - 无法可靠地确定服务器的完全限定域名,使用 172.17.0.2 作为 ServerName

docker - "no space left on device"即使在删除所有容器后

javascript - 当您开始向下滚动时,顶部标题图像在摇晃/抽动,为什么?

linux - -su :/dev/tty: No such device or address

javascript - 在页面加载问题上使用 javascript 删除和添加类

对外暴露的 Docker 端口

docker - 容器之间未创建链接

tomcat - Docker 官方 Tomcat Image 修改 Server.xml 并将 jar 添加到 lib 文件夹

php - wamp + WordPress : failed to open stream: Permission denied in

wordpress - 为什么 WordPress 在使用 wp_register_script() 时放置 "text/rocketscript"而不是 "text/javascript"?