执行docker-compose up --build构建应用失败 提示日志文件不存在如何解决
问题根因
- 核心报错原因是
docker-compose.yml内环境变量配置存在多余空格:APP_LOG_FILE= ${APP_LOG_FILE}中等号和变量之间的空格会被带入环境变量值,导致最终拿到的日志路径为/home/app-name/app.log(开头带空格)。 - logging模块的FileHandler会将带前导空格的路径识别为相对路径,自动拼接容器当前工作目录(你的场景下为
/home/app-name),最终拼接出不存在的路径/home/app-name/ /home/app-name/app.log,触发文件找不到错误。 - 额外隐藏问题:
.env文件中APP_VAR_KEY_LIST = ["db_password"]等号两侧的空格也会被解析为值的一部分,后续读取该配置时大概率会出现逻辑异常。
解决方法
- 修正
docker-compose.yml的环境变量配置,删除等号两侧多余空格:
services: app-name: build: . ports: - "9000:9000" environment: - APP_VAR_KEY_LIST=${APP_VAR_KEY_LIST} - APP_LOG_FILE=${APP_LOG_FILE}
- 修正
.env文件的写法,删除所有配置项等号两侧的空格,符合dotenv语法规范:
APP_VAR_KEY_LIST=["db_password"] APP_LOG_FILE=/home/app-name/app.log
- 执行
docker-compose down清理残留的异常容器,再重新执行docker-compose up --build即可正常启动。
可选优化项
- 确认构建配置文件名是正确的
Dockerfile,如果实际文件名为提问中误写的Dokcerfile,需要修正拼写避免后续构建异常。 - 在Dockerfile的COPY指令前添加
WORKDIR /home/app-name显式指定容器工作目录,避免默认工作目录变化引发的其他路径问题。
内容的提问来源于stack exchange,提问作者vector8188
相关产品推荐
相关产品推荐

