如何使用远程Docker而非Docker Desktop本地调用AWS SAM?
问题根因
你遇到的报错本质是路径映射不匹配导致的卷挂载失败。Windows端的SAM CLI会将本地Windows格式的项目路径传递给远程Linux上的Docker服务,但远程主机无法识别Windows路径,挂载到容器内的目录实际为空,因此运行时找不到app.js模块。
该场景完全可以实现AWS SAM本地调用,下面是具体可行的解决方案:
方案一:Windows本地运行SAM + 远程Docker
步骤1:同步项目文件到远程Docker主机
在运行Docker的Linux虚拟机上创建专属的项目目录,例如/data/sam-app,将Windows端C:\Develop\AWS\sam-app下的所有文件同步到该Linux目录下。
可选用的同步方式:
- 用Samba将Linux目录共享到Windows,直接将Windows项目文件存放在共享目录中,实现实时同步
- 用rsync、WinSCP自动同步功能,本地修改后自动同步到Linux主机
- 用VSCode的SFTP插件,保存文件时自动上传到远程主机
注意每次执行sam build后,都需要将本地生成的.aws-sam目录同步到Linux对应的项目路径下。
步骤2:添加路径映射参数执行SAM命令
运行SAM命令时添加--docker-volume-basedir参数,声明Windows本地路径到远程Linux路径的映射关系,示例命令如下:
sam local start-api --container-host 192.168.28.168 --container-host-interface 0.0.0.0 --docker-volume-basedir "C:\Develop\AWS\sam-app=/data/sam-app"
方案二:远程开发模式(更稳定,无路径兼容问题)
直接在运行Docker的Linux虚拟机上安装SAM CLI,Windows端使用VSCode Remote SSH插件连接到Linux虚拟机进行开发,所有代码、构建、运行操作都直接在Linux端执行,不需要处理跨主机的路径映射和文件同步问题,稳定性更高。
内容的提问来源于stack exchange,提问作者msreeves
相关产品推荐
相关产品推荐

