启动LocalStack时自动创建DynamoDB表报错求助
解决LocalStack初始化时
/docker-entrypoint-initaws.d/init.sh: is a directory错误 错误原因
报错明确说明你挂载到容器内的/docker-entrypoint-initaws.d/init.sh是一个目录,而非预期的脚本文件。LocalStack启动时会尝试执行该目录下的可执行脚本,但如果目标路径是目录,就会触发这个错误。
解决步骤
1. 检查本地文件类型
在终端执行以下命令,查看本地init.sh的类型:
ls -la $PWD/.localstack/
如果输出中init.sh的前缀是d(代表目录),执行以下命令删除目录并重新创建脚本文件:
rm -rf $PWD/.localstack/init.sh touch $PWD/.localstack/init.sh
然后将你的DynamoDB建表脚本内容写入这个新创建的文件。
2. 给脚本添加执行权限
LocalStack需要脚本具备可执行权限才能运行,执行以下命令:
chmod +x $PWD/.localstack/init.sh
3. 验证挂载路径的正确性
- 确保
$PWD指向你的项目根目录,你可以执行echo $PWD确认路径是否正确 - 若相对路径存在问题,可替换为绝对路径,例如:
volumes: - "/Users/your-username/your-project/.localstack/init.sh:/docker-entrypoint-initaws.d/init.sh"
4. 可选:改用目录挂载方式
如果你需要多个初始化脚本,可将本地.localstack目录挂载到容器的/docker-entrypoint-initaws.d/下,而非单个文件:
volumes: - "$PWD/.localstack:/docker-entrypoint-initaws.d/"
注意此时.localstack目录下的所有.sh/.py脚本都会按文件名顺序被执行。
验证修复
修改完成后,重新启动容器:
docker-compose up -d
查看容器日志确认是否成功创建数据表:
docker logs localstack
内容的提问来源于stack exchange,提问作者Ajay Narain Mathur
相关产品推荐
相关产品推荐

