我让WordPress在Docker内部运行,以进行本地开发,而且速度非常慢。我的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: {}
就我在网上阅读而言,这可能是我装入wp-content
卷的原因,这会导致页面加载速度非常慢(加载每个文件(例如jquery文件)的时间大约是半秒钟)必须为一页加载大量文件。
有解决方案吗?我读到有关NFS的信息,但是使用docker-compose配置NFS不适用于我,因此我不断收到“权限错误”。另一方面,macOS的Docker界面已经向我显示了“共享文件夹”选项卡,但是我不知道我现在是在使用这些共享文件夹还是只是再次安装它们。
感谢您的帮助。
答案 0 :(得分:2)
我遇到了同样的问题,但是可能找到了解决方法。
在docker桌面应用程序中(随着时间的推移,看起来像一条鲸鱼)
打开设置 选择资源\文件共享
添加相关文件夹。我在同一个父文件夹中有MySQL和Wordpress文件夹,所以添加了它。
点击“应用并重新启动”。
我的网站大幅度加速。
我希望这会有所帮助。
答案 1 :(得分:1)
在Mac和Windows中,我们应该考虑一些volumes performance issues。
我更改了docker-compose.yml
请注意,我更改了short syntax to long syntax。
此符号允许添加consistency option
。
我添加了wp-content
和php-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
答案 2 :(得分:0)
我在Docker Compose开发中遇到了与本地WordPress完全相同的问题。不管计算机的速度有多快,将文件夹安装在容器中时仍然很慢。
我还尝试了NFS之类的解决方案,以及其他建议,例如在防病毒软件中适当排除项目,添加.dockerignore等,充其量只能稍微改善性能。
浏览相似的速度时,我在WordPress Starter存储库https://github.com/visiblevc/wordpress-starter/blob/master/Dockerfile上遇到了这个Dockerfile。 如果查看此文件,您会看到它们初始化项目并将其装入容器的方式不是直接将其装入/ var / www / html /而是将其装入临时文件夹。然后他们通过bindfs将此临时文件夹同步到/ var / www / html /。这样,每次您在浏览器中加载WordPress页面时,它都会快速闪电,因为它不必在每次请求时都访问和读取Host文件。 WordPress文件是Linux容器的一部分。当您对代码进行更改时,这些更改将反映在容器临时文件夹上,bindfs将立即将这些更改同步到公共容器文件夹上,反之亦然。在公用文件夹上所做的所有更改都将同步到temp文件夹,并从那里同步到您的Host项目文件。
TL; DR 安装到容器上的临时文件夹,将该文件夹与Bindfs同步到公用服务器文件夹。 直接安装为WP站点提供服务的速度很慢,因为容器必须一个接一个地访问主机文件,这是一个繁重的过程。当文件直接成为容器的一部分时,从公用文件夹提供服务会更快。