【发布时间】:2020-03-31 08:01:14
【问题描述】:
我已经创建了烧瓶应用程序并尝试将其 dockerize。它使用机器学习库,我在下载时遇到了一些问题,所以我的 Dockerfile 有点乱,但 Image 已成功创建。
from alpine:latest
RUN apk add --no-cache python3-dev \
&& pip3 install --upgrade pip
WORKDIR /app
COPY . /app
FROM python:3.5
RUN pip3 install gensim
RUN pip3 freeze > requirements.txt
RUN pip3 --no-cache-dir install -r requirements.txt
EXPOSE 5000
ENV PATH=/venv/bin:$PATH
ENV FLASK_APP /sentiment-service/__init__.py
CMD ["python","-m","flask", "run", "--host", "0.0.0.0", "--port", "5000"]
当我尝试时: docker run my_app:latest 我明白了
/usr/local/bin/python: No module named flask
当然,我的 requirements.txt 文件中有 Flask==1.1.1。 感谢您的帮助!
【问题讨论】:
-
为什么有两条
FROM行?你为什么要覆盖requirements.txt? -
requirements.txt在freeze之后的样子如何?可以加一下吗? -
@KlausD。第二个 FROM 是因为我在下载 gensim 时遇到了一些问题,它修复了它。我正在覆盖 requirements.txt 因为我有一个错误,这个文件不存在。
-
当你运行
docker build时,它会在每一步之后打印出图像ID,所以你可以运行docker run --rm -it 0123456789ab sh来获得一个交互式调试shell,了解RUN pip3 freeze之前的图像状态线。那时你的形象是什么?为什么? -
@danny 和 @David Maze 建议的同一个交互式 shell,运行
python以检查这是您要使用的正确 python 版本的别名。