docker 环境变量踩坑记录
在docker中部署了一个PHP的站点,站点基于laravel
配置环境变量在根目录.env
文件中
用到了Redis,.env
文件Redis配置片段如下
# redis配置 REDIS_HOST=redis REDIS_PASSWORD=xxx REDIS_PORT=6379
部署完成后,打开站点,一直报错Redis::connect() expects parameter 2 to be int, string given
查看日志,发现关键错误如下:Redis::connect("redis", "tcp://10.x.x.x:6379")
10.x.x.x
是docker为redis分配的内网ip,本来这里应该是我.env
文件中定义的6379
随后去查资料,最后找到了原因
产生这个问题的原因是,我有一个redis容器,于是docker会自动创建类似下方的环境变量
REDIS_PORT="tcp://10.0.0.15:6379" REDIS_NAME="/runner-72989761-project-19846207-concurrent-0-62507216079cf651-build-3/redis"
加载.env
文件定义的参数时,会先判断环境变量中是否存在,如果不存在才会加载,于是导致我定义在.env
文件中的REDIS_PORT=6379
被覆盖了
于是给站点所在容器增加了环境变量REDIS_PORT=6379
,解决了问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?