官方如何文字新闻 https://hub.docker.com/_/wordpress/docker 图像工作...
哪里的docker-compose.yml
位于,是当前主题文件夹!
尝试使用符号链接映射主题文件夹不是一个好主意,因为这是testing
主题存在。这只会让我假设你可能从你的问题中遇到的事情变得混乱。
这是我在 noob docker wp 开发者中经常看到的常见现象。他们认为他们必须编辑 docker 构建的文件。您永远不会编辑或访问由 docker 构建的容器文件...因为当您docker-compose down
,所有数据将被删除。
默认情况下...
每次你跑步的时候docker-compose up -d
在包含您的文件夹中docker-compose.yml
配置文件,docker每次都会构建一个全新的wordpress安装。
然后当你跑步时docker-compose down
它将删除所有容器,删除数据库、插件和上传数据。
所以下次当你docker-compose up -d
在这个项目中,您将必须重新进行 WordPress 安装设置,并且您将丢失以前的所有开发数据、插件和上传。
本地 docker wp 处理...
将每个本地 WordPress 项目视为自己的项目!
我没有在此答案中包含子主题用法,但我的方法
可以扩展以适应儿童主题。
当我说将每个项目视为自己的项目时。项目文件夹包含docker-compose.yml
是你的 git 存储库!随着时间的推移,您的操作系统上将拥有每个单独的本地 wp 项目/站点的文件夹。
每个本地文件夹都是您当前项目/站点的开发主题!
不要尝试使用单个docker-compose.yml
配置来处理
多个项目/主题,直到您了解 docker 如何重建
基于您的配置的容器。
一个全新的 WordPress 主题 docker 工作流程...
创建一个新的空本地文件夹/项目。
Add docker-compose.yml
文件到您的项目..
将此代码复制到您的 yml 配置中...
version: '3.7'
networks:
wordpress:
ipam:
config:
- subnet: 172.25.0.0/16
services:
# here is our mysql database
db:
image: mysql:5.7
volumes:
- ./db:/var/lib/mysql:delegated
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wordpress
# here is our wordpress server
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
# our persistent local data re routing
- .:/var/www/html/wp-content/themes/testing:delegated
- ./plugins:/var/www/html/wp-content/plugins
- ./uploads:/var/www/html/wp-content/uploads
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
ports:
- "80:80"
restart: always
networks:
- wordpress
environment:
# our local dev environment
WORDPRESS_DEBUG: 1
DEVELOPMENT: 1
# docker wp config settings
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_AUTH_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_SECURE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_LOGGED_IN_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_NONCE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_SECURE_AUTH_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_LOGGED_IN_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_NONCE_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_CONFIG_EXTRA: |
/* Development parameters */
define('WP_CACHE', false);
define('ENVIRONMENT', 'local');
define('WP_DEBUG', true);
/* Configure mail server */
define('WORDPRESS_SMTP_AUTH', false);
define('WORDPRESS_SMTP_SECURE', '');
define('WORDPRESS_SMTP_HOST', 'mailhog');
define('WORDPRESS_SMTP_PORT', '1025');
define('WORDPRESS_SMTP_USERNAME', null);
define('WORDPRESS_SMTP_PASSWORD', null);
define('WORDPRESS_SMTP_FROM', '[email protected] /cdn-cgi/l/email-protection');
define('WORDPRESS_SMTP_FROM_NAME', 'Whoever');
/* add any more custom wp-config defines here */
# here is our mail hog server
mailhog:
image: mailhog/mailhog:latest
ports:
- "8025:8025"
networks:
- wordpress
确保您的 Docker 应用程序是最新的。如果任何以前的 docker 项目正在运行,请在项目中使用此命令将其关闭...
docker-compose down
然后在您的新项目文件夹中运行此命令来构建新的 WordPress 站点...
docker-compose up -d
现在,这将在您的项目文件夹中构建一个带有持久文件夹的新安装...
在访问该网站之前,您需要更新uploads.ini
文件夹到实际的uploads.ini
包含此配置代码的文件...
file_uploads = On
memory_limit = 2000M
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 600
所以现在你将拥有...
在您再次访问该网站之前,最好放入一些基本主题文件,以便您的主题在您访问该网站和管理时运行。
For mailhog https://hub.docker.com/r/mailhog/mailhog/要工作并接收来自本地 WordPress 环境的外发邮件,您需要将其添加到您的functions.php
...
// add the action
add_action('wp_mail_failed', 'action_wp_mail_failed', 10, 1);
// configure PHPMailer to send through SMTP
add_action('phpmailer_init', function ($phpmailer) {
$phpmailer->isSMTP();
// host details
$phpmailer->SMTPAuth = WORDPRESS_SMTP_AUTH;
$phpmailer->SMTPSecure = WORDPRESS_SMTP_SECURE;
$phpmailer->SMTPAutoTLS = false;
$phpmailer->Host = WORDPRESS_SMTP_HOST;
$phpmailer->Port = WORDPRESS_SMTP_PORT;
// from details
$phpmailer->From = WORDPRESS_SMTP_FROM;
$phpmailer->FromName = WORDPRESS_SMTP_FROM_NAME;
// login details
$phpmailer->Username = WORDPRESS_SMTP_USERNAME;
$phpmailer->Password = WORDPRESS_SMTP_PASSWORD;
});
现在下面的这些网址就可以使用了...
-
http://locolhost http://locolhost- 你的网站
-
http://locolhost/admin http://localhost/admin- 您的网站 wp 管理员(网站设置后)
-
http://本地主机:8025 http://localhost:8025- mailhog 用于查看从站点发出的邮件
所以每次你docker-compose down
and docker-compose up -d
在此项目中,您的环境将在您停止的位置准确启动。
随着您的项目的增长,高级主题开发,将每一个内容整合到项目/文件夹中,使得管理多个主题项目变得更加容易。
比如像这样...
使用 docker 工作流程在本地部署现有的 wp 主题...
如果您想在本地部署现有的主题/项目。获取现有的主题文件夹和内容,并在操作系统本地找到它。
不要尝试绘制地图themes
文件夹在你的docker-compose.yml
所以
您可以手动添加主题并激活它。这不是办法!
本质上(与上面相同),创建一个docker-compose.yml
文件位于现有主题的根目录中(本地)。
如果您不需要任何现有的db
/plugins
/uploads
为了运行这个主题,然后简单地(如上所示)使用docker-compose up -d
使用持久性构建全新的 WordPress 安装db
/plugins
/uploads
映射到此现有的本地主题文件夹。
显然,如果您现有的主题项目文件夹以前包含名为db
/plugins
/uploads
,然后尝试使用我的 yml 配置(上面提到的)重建可能会失败。确保您现有的主题文件夹没有具有这些名称的子文件夹...db
/plugins
/uploads
.
如果您想使用 docker 部署现有主题/项目,同时保留db
/plugins
/uploads
来自生产或暂存环境的数据然后......
创建一个名为的文件夹和子文件夹docker/db-dumps
在您现有的主题中以及docker-compose.yml
带有 yml 配置的文件(如上所示)。
在对接之前,放置一个mySql
数据库转储文件(示例dump.sql
) in docker/db-dumps
以及任何所需的插件/上传plugins
and uploads
此现有主题中的文件夹。像这样...
请注意,在上面的屏幕截图演示中,我没有显示任何内容
现有的主题文件。如果您正在尝试这样做,上面的演示
屏幕截图子目录结构将附加到您的
现有主题文件夹文件。
当您的生产或临时数据库 sql 转储和插件/上传正确定位后,您唯一需要在docker-compose.yml
这是...
# here is our mysql database
db:
image: mysql:5.7
volumes:
# - ./db:/var/lib/mysql:delegated (remove this and add the line below)
- ./docker/db-dumps:/docker-entrypoint-initdb.d:delegated
这意味着当您docker-compose up -d
,它将首先运行转储并将转储的 sql 生成到新安装中,将数据库部署到db
folder.
意思是如果您希望在下一次重建此数据docker-compose up -d
,那么你需要恢复docker-compose.yml
回到我原来的状态db
卷,以便 docker 从您停止的位置重建。
Git 忽略示例...
如我的高级开发屏幕截图所示,您将看到一个 git 忽略文件。一般来说,如果您使用我的高级开发屏幕截图中显示的技术,这就是 git 忽略文件内容的样子......
/vendor
/uploads
/db
/dist
/node_modules
/plugins
/docker