php - 如何在本地机器上使用 nginx 和 php7-fpm 增加 docker 的加载时间

标签 php wordpress docker nginx

在我的本地机器上,使用 nginx 和 php7-fpm 的 docker 上的 WordPress 页面加载时间非常慢,并且在网络调用中显示 2 - 4 秒来加载第一个文档。但是当我计算 PHP 执行时间时,它显示了 0.02 - 0.1 秒。如何优化 docker 设置以加速本地环境?

以下是我本地环境的一些细节

我的本地环境是在 Mac Sierra 上设置的,我通过以下方式运行 docker
docker-compose up -d
这是我的 docker-compose.yml 文件

version: '2'
services:
  mysql:
    container_name: db
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=dummy
      - MYSQL_DATABASE=dummy
      - MYSQL_USER=dummy
      - MYSQL_PASSWORD=dummy
    volumes:
      - dummy_path/dump.sql.gz:/docker-entrypoint-initdb.d/sql1.sql.gz
  nginx:
    container_name: nginx
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    links:
      - mysql:db
      - php
    volumes:
      - dummy_path:/app/www
      - dummy_path/nginx/conf.d/:/etc/nginx/conf.d/
      - dummy_path/nginx/ssl:/etc/ssl/
      - dummy_path/nginx/nginx.conf/:/etc/nginx/nginx.conf
      - dummy_path/hosts:/etc/hosts
  php:
    container_name: php
    image: droidhive/php-memcached
    links:
      - mysql:db
      - memcached
    volumes:
      - dummy_path:/app/www
      - dummy_path/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini
      - dummy_path/hosts:/etc/hosts
  memcached:
    container_name: memcached
    image: memcached
    volumes:
      - dummy_path:/app/www

最佳答案

我会尝试的第一件事是将您的 Dockerfile 更新为 ADDCOPY所有文件到每个图像中,而不是将它们作为卷安装。 @fiber-optic 在评论中提到了这一点,但是您的 PHP 容器的新 Dockerfile 将是这样的:

FROM droidhive/php-memcached
ADD dummy_path:/app/www
ADD dummy_path/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini
ADD dummy_path/hosts:/etc/hosts

至少对 PHP 容器执行此操作,但 MySQL 容器也可能是一个问题。

如果这没有帮助或您无法使其正常工作,请尝试添加 :ro:cached到您的每一卷。
:ro表示“只读”,它允许您的容器假设卷不会改变。显然,如果您需要使用卷中的代码进行本地开发,这将不起作用,但对于您的某些配置文件,这可能会很好。
:cached意味着主机的文件是权威的,并且容器不会不断地在内部检查更新。这通常是您在主机上编辑的代码的理想选择。

关于php - 如何在本地机器上使用 nginx 和 php7-fpm 增加 docker 的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410213/

相关文章:

docker - 拉人工 docker 图像

php - 查询日历事件的最佳方式?

php - 将 CSV 值插入数据库时​​,列计数与第 1 行错误的值计数不匹配

php - 在 PHP 中保存最后一个 SQL 查询状态

php - 如何获得魔术方法 __call 的自动完成 - PHP 编辑器

css - Mac 浏览器不会像 Windows 那样显示我的菜单

php - 如何以编程方式更改 woocommerce 中各处的产品名称?

javascript - 温泉 ui json wordpress

docker - x509 : certificate signed by unknown authority: Google Storage in Docker

python - 通过 AWS PrivateLink 从不同的 AWS 账户访问 AWS ElastiCache(Redis CLUSTER 模式)