【问题标题】:Building Docker image for a python flask web app. Image does not appear or requirements.txt not found为 python 烧瓶 Web 应用程序构建 Docker 映像。图片未出现或未找到 requirements.txt
【发布时间】:2017-04-24 17:04:50
【问题描述】:

我正在尝试创建使用 Docker 创建的 web 应用程序的构建,但没有成功。我尝试遵循两个不同的教程,但都不适合我

关注Tutorial 1: 构建似乎没有任何问题完成,但我无法在任何地方找到图像文件,并且“sudo docker ps -a”什么也没返回。

通过thtutorial 2: 我现在收到另一个错误,即找不到需求文件。我在这里查找了解决方案,但似乎我通过使用“ADD requirements.txt /webapp”命令将其添加到构建中来做正确的事情。我检查了我的要求拼写是否正确,哈哈。现在我确实在 'sudo docker ps -a' 中看到了它,但我没有看到任何图像文件,而且如果我看到它可能不会工作,因为它找不到要求。

我对出了什么问题以及我应该如何正确构建一个 docker 感到很困惑。如何让它找到需求文件,然后在完成“构建”命令后,实际上有一个图像。此图像存储在哪里?

以下是我学习第二个教程后的设置。

Dockerfile

FROM ubuntu:latest

#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 uwsgi 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"]
CMD ["app.py"]

要求

Flask==0.12.1
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
Werkzeug==0.11.5
SQLite3==3.18.0

目录结构(如果重要)

app.py
image_data.db
README.txt
requirements.txt
Dockerfile
templates
 - index.html
static/
 - image.js
 - main.css
 img/
   - camera.png
 images/
   - empty

'sudo docker ps -a'的当前输出

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
663d4e096938        8f5126108354        "/bin/sh -c 'pip i..."   17 minutes ago      Exited (1) 17 minutes ago                       admiring_agnesi

【问题讨论】:

    标签: python docker flask dockerfile


    【解决方案1】:

    requirements.txt 应该与您的 dockerfile 位于同一目录中。我从 dockerfile 中看到 requirements.txt 已添加到 webapp 但

    RUN pip install -r requirements.txt
    

    试图在当前目录中找到它;您可能需要将 rquirement.txt 复制到当前目录,例如

    ADD requirements.txt .
    

    让我们看看这是否有效。我没有测试它。

    你可以看到图片

    docker images 
    

    然后像这样运行它

    docker run -t image_name
    

    【讨论】:

    • 如果您使用 docker 图像显示图像,这是否意味着创建的图像不是您可以在目录中看到的实际文件?如果是这样,图像存储在哪里/如何存储?
    • @BrianC:图像存储在/var/lib/docker。除非您想冒险破坏 Docker,否则建议您不要乱搞该目录中的任何内容。
    • 正如@jwodder 所提到的,它位于/var/lib/docker 中。您可以在此处了解更多信息:stackoverflow.com/questions/19234831/…
    • 所以它现在可以编译了,我使用docker build -t imgcomparer . 进行了构建,但运行docker run -t imgcomparer 会出现Unable to find image 'imgcomparer:latest' locally 之类的错误。我能够通过使用docker images 显示的 ID 来运行它。所以它使用 cmd docker run -t 7b4f475bd3fe... 运行(或者我认为它确实如此,它在 powershell 窗口中显示 root@bbbca1d2760f:/#)但现在如果我导航到我在 Docker 中指定的地址(0.0 .0.0:8000)。烧瓶python文件把它放到地址172.0.0.1:8000有关系吗?
    • @BrianC 实际上,如果您在 Ubuntu 的本地主机上,我认为您应该将其设置为 127.0.0.1:xxxxx。我知道这适用于 Django; Flask 应该是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2020-09-30
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多