我正在尝试为Python Flask应用程序构建Docker镜像,但是遇到了构建问题-所有文件都位于名为web
的文件夹中-这是项目结构:
web/
__init__.py
app.py
Dockerfile
models.py
requirements.txt
目前,app.py
的代码如下:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello World!"
if __name__ == "__main__":
app.run(debug=True,host='0.0.0.0')
我从https://www.smartfile.com/blog/dockerizing-a-python-flask-application/借用了
Dockerfile
:FROM ubuntu:14.04
# Update OS
RUN sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get -y upgrade
# Install Python
RUN apt-get install -y python-dev python-pip
# Add requirements.txt
ADD requirements.txt /webapp
# Install wsgi Python web server
RUN pip install uwsgi
# Install app requirements
RUN pip install -r requirements.txt
# Create app directory
ADD . /webapp
# Set the default directory for our environment
ENV HOME /webapp
WORKDIR /webapp
# Expose port 8000 for uwsgi
EXPOSE 8000
ENTRYPOINT ["uwsgi", "--http", "0.0.0.0:8000", "--module", "app:app", "--processes", "1", "--threads", "8"]
我正在尝试使用
docker build --no-cache --rm -t flask-app
构建Docker镜像,但最终出现了错误信息:Successfully installed uwsgi
Cleaning up...
---> 9bbc004212a3
Removing intermediate container 70ed8f07c408
Step 8/13 : RUN pip install -r requirements.txt
---> Running in f5e2eb59ffd1
Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
Storing debug log for failure in /root/.pip/pip.log
The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 1
成功安装uwsgi 清理中... ---> 42b208ea012c 正在删除中间容器308ffeea1f10 步骤8/13:运行pip install -r /webapp/requirements.txt ---> 正在运行dbe480989f42 无法打开要求文件:[Errno 20]不是目录:'/webapp/requirements.txt' 将失败的调试日志存储在/root/.pip/pip.log中 命令'/bin/sh -c pip install -r /webapp/requirements.txt'返回非零代码:1
- srmweb
文件夹中物理创建webapp
子目录吗? - srmADD . /webapp
移动到pip install
语句上方了,你可以试一下吗? - Rafael Barrossetup_package()
File "/tmp/pip_build_root/scipy/setup.py", line 395, in setup_packagefrom numpy.distutils.core import setup
ImportError: No module named numpy.distutils.core----------------------------------------。这似乎是因为没有在要求中安装
numpy。我认为
scipy会安装包括
numpy`在内的所有依赖项。 - srm