Docker Wordpress 插件持久化或映射到本地插件

Docker Wordpress plugins persistence or mapping to local plugins

我是 运行 最新的 Docker mac 应用程序,并在我的项目目录中创建了一个新的 docker-compose.yml。 (这是我的 wordpress 主题)。


下面是我的配置 docker-compose.yml 文件...

version: '3.7'

networks:
  wordpress:
    ipam:
      config:
        - subnet: 172.25.0.0/16

services:
  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

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - .:/var/www/html/wp-content/themes/testing:delegated
    ports:
      - "80:80"
    restart: always
    environment:
      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_DEBUG: 1
    networks:
      - wordpress


到目前为止,我觉得它很棒。我在让数据库持久化方面遇到了一些问题,并且弄清楚 wp-content 文件夹需要将所有者设置为 www-data.

但在修复上述问题后,它工作得很好,如果我 docker-compose downup 我的数据库是持久的。另外,我的数据库正在从我的本地主题中提取。


令人失望的是,如果我 docker-compose down
docker-compose rm.

,我的插件文件夹会自行重置

有什么方法可以从我的 mac 或项目主题文件夹映射本地文件夹?然后我可以将我的插件存储在这里,这样当我 docker-compose up -d 它会记住我的插件。

任何想法都会很棒。


例如,我可以将插件文件夹放在我的本地主题文件夹项目中...



已解决!

因为我是 运行 本地开发人员、npm、作曲家等。我的目标是保持一个真正简单的文件夹结构,所以我的主题是我在 phpStorm 中的项目路径。

我现在通过添加以下卷映射(请参阅下面的代码)在我的主题路径项目文件夹中包含我的插件和上传文件夹用于本地持久数据。

这不是您的经典 Wordpress 结构,但我不会将 pluginsuploads 提交给版本控制或我的登台服务器环境。这些纯粹是为了我的本地持久数据,因为我 docker-compose down.

现在查看我的 phpStorm 项目结构...

查看我的 docker-compose.yml 配置文件...

version: '3.7'

networks:
  wordpress:
    ipam:
      config:
        - subnet: 172.25.0.0/16

services:
  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

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - .:/var/www/html/wp-content/themes/testing:delegated
      - ./plugins:/var/www/html/wp-content/plugins
      - ./uploads:/var/www/html/wp-content/uploads
    ports:
      - "80:80"
    restart: always
    environment:
      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_DEBUG: 1
    networks:
      - wordpress


感谢 @Ludi Sistemaš 的帮助。


是的,有办法。您首先需要重新排列目录结构。 在您的主机上,您使用主题目录作为挂载点。让我们说你打算这样做。 在主机上创建新目录,并将其命名为 wp-content。现在你可以在你的 docker-compose 文件中编辑这一行,它需要被移动到这个 wp-content 目录中。

   volumes:
       - .:/var/www/html/wp-content/  

将您的主题放入 wp-content/themes。 它应该与服务器上的位置完全一样。 注意:所有其他 wp 默认目录结构都将在该挂载点上重新创建,并且它将是持久的。

编辑: 聊了一会儿,我明白了 OP 需要什么。 为了从此体系结构安装另一个目录。您需要指向正确的路径并像这样安装它:

volumes:
  - .:/var/www/html/wp-content/themes/testing:delegated
  - ./plugins:/var/www/html/wp-content/plugins