使用 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的更深层次的东西。
对于经常接触的人来说,可能是很普通的内容吧。。。

广告
将在 10 秒后关闭
bannerAds