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

标签 wordpress docker docker-volume

我正在运行最新的 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它记得我的插件。

任何想法都会很棒。

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

enter image description here



解决了!

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

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

这不是典型的 Wordpress 结构,但我不 promise pluginsuploads到版本控制或我的登台服务器环境。这些纯粹是为了我的本地持久数据,以防我 docker-compose down .

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

enter image description here

看我的 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

关于wordpress - Docker Wordpress 插件持久化或映射到本地插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58936160/

相关文章:

docker - 在 docker-compose.yml 中定义卷

wordpress - 为什么使用 wp_enqueue_style 比 WordPress 中的链接标签更好?

mysql - SQL 查询问题 - 未知列错误

WordPress 根据 Facebook 评论显示热门帖子

javascript - 向 WordPress 添加多步骤表单

python - Docker如何将python 3.8设为默认

docker - 在没有互联网连接的情况下运行 docker compose 文件

docker - Docker卷安装路径

嵌入式系统上的 Docker,为什么不呢?