Docker部署Flask情感分析应用时出现“Name or Service not known”错误求助
解决Flask情感分析容器化后"Name or Service not known"错误
核心问题定位
你遇到的错误核心原因是Dockerfile中Flask启动命令的参数格式错误:
CMD ["flask", "run", "--host= 0.0.0.0", "--port=5000"]
--host= 0.0.0.0里=后面多了一个空格,Flask会把带前导空格的 0.0.0.0当作要连接的主机名,尝试解析这个"服务名"时自然会抛出"Name or Service not known"错误。
修复步骤
1. 修正Dockerfile的启动命令
把带空格的参数改成正确格式,两种写法任选其一:
FROM python:3.10.8 COPY requirements.txt . RUN pip install -r requirements.txt RUN python -c "import nltk; nltk.download('averaged_perceptron_tagger'); nltk.download('wordnet'); nltk.download('omw-1.4'); nltk.download('stopwords');" COPY . . EXPOSE 5000 # 写法1:去掉=后的空格 CMD ["flask", "run", "--host=0.0.0.0", "--port=5000"] # 写法2:拆分参数更规范(推荐) # CMD ["flask", "run", "--host", "0.0.0.0", "--port", "5000"]
2. 额外潜在问题检查
- 模型文件路径:确保项目根目录下的
Models/Sentimenttfpipe文件存在,且COPY . .命令能正确将该目录复制到容器内,避免因模型文件缺失导致的隐式错误。 - Flask入口明确性:可在Dockerfile中添加
ENV FLASK_APP=app.py,明确指定Flask的入口文件,避免因环境变量缺失引发的启动异常。
验证修复
执行以下命令重新构建并启动容器:
docker compose down docker compose up --build
启动完成后,可通过以下命令测试接口:
curl -X POST -H "Content-Type: application/json" -d '{"text":"I am happy"}' http://localhost:5000/predict
内容的提问来源于stack exchange,提问作者M Bilal Ayaz
相关产品推荐
相关产品推荐

