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
,解决了问题