You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Lando将同级CMS文件夹挂载到Webroot并配置代理(不移动Lando配置文件)

解决方案:挂载同级CMS目录到Lando服务

你的核心问题在于Lando默认只会将**存放.lando.yml的项目根目录(也就是project-1)**挂载到容器的/app路径下,所以容器内无法直接访问宿主机上同级的cms文件夹。用cp命令失败也是因为这个原因——容器里根本找不到../cms这个路径。

要在不移动Lando配置文件的前提下实现需求,最佳方式是通过Lando的volumes配置,将宿主机上的cms文件夹直接挂载到cms服务的容器内部,然后调整该服务的webroot指向挂载后的路径。

修改后的完整Lando配置

name: project-1
recipe: lamp
config:
  webroot: .
proxy:
  site: project-1-site.lndo.site
  cms: project-1-cms.lndo.site
services:
  webserver:
    type: php:7.3
    via: apache:2.4
    ssl: true
  database:
    type: mariadb:10.1.47
  pma:
    type: phpmyadmin
    hosts:
      - database
  site:
    type: php:7.3
    via: apache:2.4
    ssl: true
    webroot: /public
    build_as_root:
      - a2enmod headers
  cms:
    type: php:7.3
    via: apache:2.4
    ssl: true
    # 挂载宿主机同级的cms文件夹到容器内的/app/cms路径
    volumes:
      - ../cms:/app/cms
    # 将webroot指向容器内挂载后的cms目录
    webroot: /app/cms
    build_as_root:
      - a2enmod headers

关键修改点说明

  1. 修正Proxy格式:你原配置中proxy部分的写法有误,每个代理项应该是服务名: 域名的格式,我去掉了多余的破折号。
  2. 添加Volumes挂载:在cms服务中新增volumes配置,../cms是宿主机上相对于project-1目录的路径(也就是同级的cms文件夹),: /app/cms是容器内的目标挂载路径,这样容器就能直接访问cms的所有文件。
  3. 调整Webroot路径:将cms服务的webroot改为容器内的挂载路径/app/cms,确保Apache能正确识别CMS的根目录。

额外注意事项

  • 确保宿主机上的../cms路径正确,且Lando有足够的权限读取该文件夹(如果遇到权限问题,可以尝试在cms服务中添加user: root临时测试,或者调整宿主机文件夹的权限)。
  • 如果你的CMS需要特定的PHP扩展,可以在cms服务中添加build或build_as_root命令来安装,比如docker-php-ext-install mysqli。

内容的提问来源于stack exchange,提问作者Matthias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:12:36