Docker Compose无法读取.env文件,Elastic Stack部署失败
解决Docker Compose读取.env变量失败的方案
1. 检查.env文件路径与命名
- 确保
.env文件和docker-compose.yaml完全在同一目录(你的场景是C:\Project Root\esk),文件名必须是.env,不能带任何后缀(比如避免Windows系统自动添加的.txt后缀),可在文件夹选项中开启“显示隐藏文件”和“显示文件扩展名”来确认。 - 执行
docker-compose up -d前,必须切换到esk目录下操作,不能在上级目录通过相对路径调用Compose,否则可能无法识别.env文件。
2. 修正.env文件格式
- 变量定义不要加引号,正确写法示例:
禁止写成STACK_VERSION=8.10.0 KIBANA_PORT=5601STACK_VERSION="8.10.0"这类带引号的格式。 - 变量名和值之间不能有空格,比如
STACK_VERSION = 8.10.0这种带空格的写法会导致变量无法被识别。 - 将文件换行符改为LF(Unix格式),可通过Notepad++等工具转换,避免Windows默认的CRLF格式干扰。
3. 强制指定.env文件路径
如果自动读取失效,执行命令时手动指定.env文件位置:
docker-compose --env-file ./.env up -d
若在WSL2终端操作,需将Windows路径转为WSL格式,比如C:\Project Root\esk对应/mnt/c/Project Root/esk,进入该目录后再执行上述命令。
4. 检查Docker Desktop的WSL集成设置
- 打开Docker Desktop设置,进入Resources > WSL Integration,确保你正在使用的WSL发行版(如Ubuntu)已开启集成开关。
- 重启Docker Desktop后,重新打开WSL终端执行部署命令。
5. 清除Docker Compose缓存
缓存异常可能导致变量读取混乱,执行以下命令清除缓存后重新部署:
docker-compose down -v docker system prune -f docker-compose up -d
6. 验证变量读取状态
在esk目录下执行以下命令,检查Compose是否能正确解析.env中的变量:
docker-compose config
若输出的配置中变量已被正确替换,说明读取正常,再执行启动命令即可。
内容的提问来源于stack exchange,提问作者punished ksen
相关产品推荐
相关产品推荐

