【问题标题】:Vagrant + Docker + Wordpress流浪者 + 码头工人 + WordPress
【发布时间】:2015-12-05 13:14:57
【问题描述】:

我在 Mac 上安装了 vagrant,我想实现这个:

  1. 启动 vagrant 并拥有一个安装了 docker 和 docker compose 的 vagrant
  2. 使用 docker-compose up 在这台 vagrant 机器中安装 mysql 和 Wordpress
  3. 将 docker 容器的文件夹 (/var/www/html) 映射为我的 vagrant 机器中 /dockermapinVagrant 的卷
  4. 将此 /dockermapinVagrant 安装到我的主机 (OS X) 上,并能够直接从主机修改文件

我做到了,一切都很完美。 我可以毫无问题地从我的 OS X 主机添加模板(在我的主机 OS X 上的主题文件夹中拖动主题),使用我的浏览器直接查看 Wordpress 站点的更改...

问题

  • 我注意到我无法在 Wordpress 上安装任何插件( 仪表板->更新)我有一条消息:
    • 要执行请求的操作,WordPress 需要访问您的 Web 服务器。请输入您的 FTP 凭据以继续。如果你不 记住您的凭据,您应该联系您的网络托管服务商。

我尝试过的解决方案

通过将用户设置为 www-data 并将 chmod 设置为 777 来更改 docker 容器 wp 中的权限,但在某些文件夹上作为 wp-content 它不会更改为 777。此外,将所有者设置为 www-data 不会完全可以工作,它在容器中始终保持在 1000:1000。

有没有办法在没有 FTP 的 docker 容器中更新 wordpress 上的插件?

有没有更好的方法呢?在 vagrant 机器上使用仅数据容器,并通过 FTP 访问已安装的卷?并将 vagrant 机器上的数据容器卷映射到主机上,以便直接访问并在开发过程中直接查看更改。但我不想直接在仅数据容器上提供 FTP 访问(FTP 不安全,我更喜欢直接管理来自 vagrant 机器的备份和数据,并删除生产中的映射卷)

【问题讨论】:

    标签: wordpress ftp docker vagrant


    【解决方案1】:

    你肯定能做到这一点,它可能只是缺少的那一行

    define( 'FS_METHOD', 'direct' );
    

    在您的 wp-config 文件中。您应该首先在 docker 环境之外设置每个 WordPress 恕我直言;然后使用您的Dockerfile(s) 将数据库和 WordPress 文件等导入 docker,作为暂存和部署的一部分,这应该与开发不同(尽管某些部署将被共享)。

    关于更好的管理方式,如果可能的话,我不会将 docker 放在 vagrant 中;它为该开发阶段增加了不必要的复杂性。我会专门使用 vagrant,专注于准备好我的配置脚本(因为我在 vagrant 和 docker 之间使用脚本),并通过 SFTP 直接工作到 vagrant box;通过 git 提交更改。然后,您可以将精力集中在必要的代码上,并在需要时提取您需要的内容。

    一旦进入测试或登台阶段,我会使用配置器脚本帮助我始终如一地构建我的 docker 环境(可能会共享一些配置代码)。然后我可以从我的 repo 中提取一个特定的版本,并将其构建到我可以部署的 docker 映像中。

    如果您真的想启动其他替代方案,请删除 WordPress,掌握WP-CLI command-line tools,它可以安装 WordPress、插件、管理更新和安装完整性。

    【讨论】:

    • 感谢您的回答!您能否详细解释一下:我将专门使用 vagrant,专注于准备好我的配置脚本(因为我在 vagrant 和 docker 之间使用脚本),并通过 SFTP 直接工作到 vagrant box;通过 git 提交更改。更准确地说,承诺改变什么?修改了哪些代码?我的配置脚本准备好了(因为我在 vagrant 和 docker 之间使用脚本)什么样的脚本?
    • 所以就我个人而言,我会在我计划编辑的每个插件和主题文件夹中进行 git init 操作,或者如果它们已经在源代码控制之下,则使用 git 克隆它们。我会通过 SSH 做到这一点(任何带有 SFTP 的东西也应该支持 SSH,并且在 linux 和 Mac 下,我相信 vagrant ssh 的主机会为你连接)。至于提交更改,您将使用 SSH 和 git commit 来在 vagrant 中进行更改,以及其他 git 标签以确保您永远不会上传文件(改为 git commit -am them)
    • 我使用的脚本也是常规的 shell 脚本,但偶尔如果顽皮的编码员忘记了他们所做的事情,我会梳理 bash 历史文件以了解他们所做的事情(从不让我开心,但它有效)
    • 感谢您的回答,我现在也将应用此方法!
    • 更新:我不再将代码烘焙到 docker 映像中。我只使用代码安装文件夹,这意味着具有 R/W 访问权限的非公共 docker 是修改文件的唯一方法。尽管我承认这对于某些类型的开发人员或团队来说可能是一件令人头疼的事情。它迫使我在事件驱动或排队架构中思考,从而导致更快的请求->响应(尽管不一定更快的预期结果,它确实加速了 WP 或任何开发)。
    猜你喜欢
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2014-10-27
    • 2022-01-26
    • 2014-07-04
    • 2015-02-17
    相关资源
    最近更新 更多