使用 Docker+WordPress+MySQL 搭建一个可以进行图片上传的系统
是的,我是Haru兔。
这次我接到了一个关于WordPress的工作项目,遇到了一些问题,所以写下了这些备忘录。
对于平常经常使用WordPress的人来说,我觉得大家应该对以下内容有所了解。
前提 tí) – Premise
-
- dockerでWordPress環境を構築する
- その環境下でテーマ作成
这次遇到了困难的地方
-
- dockerでWordPress環境を構築したら、WordPressで画像をアップロードできない
- そもそもコンテナが立ち上がらない
我們將按順序逐一檢視。
首先是目錄結構。
wp-template
├── docker-compose.yml
├── wp-config.php
└── wp-content
├── index.php
├── languages
├── plugins
├── themes
├── upgrade
└── uploads
只要有docker-compose.yml和wp-content文件夹就可以正常运行。wp-content的内容会在执行docker-compose up时自动配置为初始状态。wp-config.php是WordPress的必备文件。它会自动生成,但在我的情况下没有生成,所以我根据官方的wp-config.php进行了修改。
version: "3"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress #任意
MYSQL_DATABASE: wordpress #任意
MYSQL_USER: wordpress #任意
MYSQL_PASSWORD: wordpress #任意
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress #任意
WORDPRESS_DB_PASSWORD: wordpress #任意
volumes:
- ./wp-content:/var/www/html/wp-content
- ./wp-config.php:/var/www/html/wp-config.php
volumes:
db_data:
我在写的时候觉得使用.env来管理DB相关的配置会更方便。当你访问http://localhost:8000/时,会显示出WordPress熟悉的界面。
这是常见的事情。
在使用Docker构建WordPress环境后,无法在WordPress中上传图片。
如果想在WordPress上发布文章时上传图片,发现无法实现!经过调查,似乎需要在wp-config.php文件中添加一条语句补充。
define('DB_NAME', 'wordpress'); #docker-compose.ymlで設定したもの
define('DB_USER', 'wordpress'); #docker-compose.ymlで設定したもの
define('DB_PASSWORD', 'wordpress'); #docker-compose.ymlで設定したもの
define('DB_HOST', 'db'); #docker-compose.ymlで定義したmysqlコンテナ名
define('WP_DEBUG', true);
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
define('UPLOADS', 'wp-content/uploads' ); #これを追記
$table_prefix = 'wp_';
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
这是最终形态的代码。
这是需要添加以下内容的代码。
define('UPLOADS', 'wp-content/uploads' );
首先,容器无法启动。
sed命令出现错误,显示无法将./xxxxx重命名为Device或资源忙,导致容器无法启动。
在查询中,出现了以下文章。通过这篇文章解决了问题。前人的智慧真是了不起。
https://qiita.com/suzukihi724/items/e56fa9516639c6c90a33
最后
我从学生时代开始接触WordPress,但因为是在MAMP环境下,所以没有遇到太大的困难。
这一次是用Docker进行环境搭建,所以我觉得可以理解WordPress的更深层次的东西。
对于经常接触的人来说,可能是很普通的内容吧。。。