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

jos*_*oto 4 wordpress docker docker-volume

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

\n\n

\n\n


\n\n

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

\n\n
version: \'3.7\'\n\nnetworks:\n  wordpress:\n    ipam:\n      config:\n        - subnet: 172.25.0.0/16\n\nservices:\n  db:\n    image: mysql:5.7\n    volumes:\n      - ./db:/var/lib/mysql:delegated\n    ports:\n      - "3306:3306"\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: somewordpress\n      MYSQL_DATABASE: wordpress\n      MYSQL_USER: wordpress\n      MYSQL_PASSWORD: wordpress\n    networks:\n      - wordpress\n\n  wordpress:\n    depends_on:\n      - db\n    image: wordpress:latest\n    volumes:\n      - .:/var/www/html/wp-content/themes/testing:delegated\n    ports:\n      - "80:80"\n    restart: always\n    environment:\n      WORDPRESS_DB_HOST: db:3306\n      WORDPRESS_DB_USER: wordpress\n      WORDPRESS_DB_PASSWORD: wordpress\n      WORDPRESS_DB_NAME: wordpress\n      WORDPRESS_AUTH_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_SECURE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_LOGGED_IN_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_NONCE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_SECURE_AUTH_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_LOGGED_IN_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_NONCE_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_DEBUG: 1\n    networks:\n      - wordpress\n
Run Code Online (Sandbox Code Playgroud)\n\n


\n\n

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

\n\n

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

\n\n


\n\n

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

\n\n

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

\n\n

任何想法都会很棒。

\n\n


\n\n

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

\n\n

在此输入图像描述

\n\n


\n\n
\n\n

解决了!

\n\n

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

\n\n

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

\n\n

这不是经典的 Wordpress 结构,但我不会致力于plugins版本uploads控制或我的临时服务器环境。这些纯粹是为了我的本地持久数据,以防万一我docker-compose down

\n\n

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

\n\n

在此输入图像描述

\n\n

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

\n\n
version: \'3.7\'\n\nnetworks:\n  wordpress:\n    ipam:\n      config:\n        - subnet: 172.25.0.0/16\n\nservices:\n  db:\n    image: mysql:5.7\n    volumes:\n      - ./db:/var/lib/mysql:delegated\n    ports:\n      - "3306:3306"\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: somewordpress\n      MYSQL_DATABASE: wordpress\n      MYSQL_USER: wordpress\n      MYSQL_PASSWORD: wordpress\n    networks:\n      - wordpress\n\n  wordpress:\n    depends_on:\n      - db\n    image: wordpress:latest\n    volumes:\n      - .:/var/www/html/wp-content/themes/testing:delegated\n      - ./plugins:/var/www/html/wp-content/plugins\n      - ./uploads:/var/www/html/wp-content/uploads\n    ports:\n      - "80:80"\n    restart: always\n    environment:\n      WORDPRESS_DB_HOST: db:3306\n      WORDPRESS_DB_USER: wordpress\n      WORDPRESS_DB_PASSWORD: wordpress\n      WORDPRESS_DB_NAME: wordpress\n      WORDPRESS_AUTH_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_SECURE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_LOGGED_IN_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_NONCE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_SECURE_AUTH_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_LOGGED_IN_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_NONCE_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb\n      WORDPRESS_DEBUG: 1\n    networks:\n      - wordpress\n
Run Code Online (Sandbox Code Playgroud)\n\n


\n\n

感谢@Ludi Sistema\xc5\xa1的帮助。

\n\n


\n

Lud*_*maš 5

是的,有办法。您首先需要重新排列目录结构。在您的主机上,您使用主题目录作为安装点。假设你要这样做。在主机上创建新目录,并将其命名为 wp-content。现在,您可以在 docker-compose 文件中编辑这一行,该文件需要移动到此 wp-content 目录中。

   volumes:
       - .:/var/www/html/wp-content/  
Run Code Online (Sandbox Code Playgroud)

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

编辑:聊了一下之后,我明白了OP需要什么。为了从该架构安装另一个目录。您需要指向正确的路径并像这样安装它:

volumes:
  - .:/var/www/html/wp-content/themes/testing:delegated
  - ./plugins:/var/www/html/wp-content/plugins
Run Code Online (Sandbox Code Playgroud)