流浪汉+;Docker&x2B;Wordpress

流浪汉+;Docker&x2B;Wordpress,wordpress,ftp,docker,vagrant,Wordpress,Ftp,Docker,Vagrant,我在Mac上安装了vagrant,我想实现以下目标: 启动流浪者,安装docker并编写docker 在这台带有docker compose的流浪机器中安装带有mysql的Wordpress 将docker容器的文件夹(/var/www/html)映射为位于/dockermapinVagrant的my vagrant计算机中的卷 将此/dockermapinVagrant安装到我的主机(OS X)上,并能够直接从主机修改文件 我做到了,一切都很完美。 我可以毫无问题地从我的OS X主机添加模板(

我在Mac上安装了vagrant,我想实现以下目标:

  • 启动流浪者,安装docker并编写docker
  • 在这台带有docker compose的流浪机器中安装带有mysql的Wordpress
  • 将docker容器的文件夹(/var/www/html)映射为位于/dockermapinVagrant的my vagrant计算机中的卷
  • 将此/dockermapinVagrant安装到我的主机(OS X)上,并能够直接从主机修改文件
  • 我做到了,一切都很完美。 我可以毫无问题地从我的OS X主机添加模板(在我的主机OS X上的“主题”文件夹中拖动主题),使用我的浏览器直接查看Wordpress站点的更改

    问题

    • 我注意到我不能在Wordpress上安装任何插件( 仪表板->更新)我有一条消息:
      • 要执行请求的操作,WordPress需要访问您的web服务器。请输入您的FTP凭据以继续。如果你不 记住您的凭据,您应该联系您的web主机
    我尝试的解决方案

    更改docker容器wp中的权限,方法是将用户设置为www data,将chmod设置为777,但在某些文件夹中,作为wp内容,它不会更改为777。此外,将所有者设置为www数据根本不起作用,它在容器中始终保持为1000:1000

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


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

    您肯定可以做到这一点,而且这可能只是缺少的一行

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

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

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


    如果您真的想启动,请删除WordPress,使用,它可以安装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他们),我使用的脚本也是常规的shell脚本,但偶尔如果淘气的程序员忘记了他们所做的事情,大家都知道,我会在bash历史文件中查找它们所做的事情(这从来没有让我高兴过,但它很管用),谢谢你的回答,我现在也会应用这个方法!更新:我不再将代码烘焙到docker图像中。我使用代码以只读方式挂载文件夹,这意味着具有R/W访问权限的非公共docker是修改文件的唯一方法。尽管我承认这对某种类型的开发人员或团队来说可能是个头疼的问题。它迫使我在一个事件驱动或排队的体系结构中思考,导致更快的请求->响应(虽然不一定更快,但它确实加快了WP或任何开发)。