部署Golang应用到AWS Elastic Beanstalk时遇mysql.sock不存在错误
解决AWS Elastic Beanstalk部署Golang应用时的mysql.sock权限错误
问题定位
部署时EB的StageApplication步骤尝试修改/var/app/staging/mysql/mysql.sock的权限,但实际文件状态异常(即使手动确认存在,也可能是打包时套接字文件损坏,或EB部署脚本的时序问题),且切换SQLite后问题依旧,说明部署流程中仍残留MySQL相关的权限处理逻辑。
解决步骤
清理本地打包内容
本地开发生成的mysql/目录(含sock套接字文件)可能被误打包进部署包,导致EB部署时处理异常。将mysql/加入.gitignore或打包工具的排除列表,重新生成干净的部署包。添加EB扩展配置跳过不必要的权限操作
在项目根目录创建.ebextensions文件夹,新建01-fix-permissions.config文件,写入以下内容:container_commands: 01_remove_mysql_dir: command: "rm -rf /var/app/staging/mysql || true" 02_skip_chown_check: command: "echo 'Skipping mysql.sock chown - SQLite in use'"该配置会在部署阶段提前删除可能存在的mysql目录,避免EB默认脚本尝试修改其权限。
检查EB环境配置
登录Elastic Beanstalk控制台,进入环境的「配置」-「软件」页面,确认没有配置MySQL相关的环境变量或附加组件;同时检查项目的Procfile和go.mod,确保无残留的MySQL依赖引用。强制清理缓存重新部署
执行命令eb deploy --staged触发全新部署,或在控制台重启环境,清除旧的部署缓存。
内容的提问来源于stack exchange,提问作者Diana
相关产品推荐
相关产品推荐

