Docker 容器构建在绑定安装 Flask 时失败

问题描述 投票:0回答:1

我遇到了 Docker 问题。 我尝试在 docker 容器内运行 Flask 应用程序,但出现以下错误: 完整堆栈跟踪:

mkdir: cannot create directory ‘tempdir’: File exists
mkdir: cannot create directory ‘tempdir/templates’: File exists
mkdir: cannot create directory ‘tempdir/static’: File exists
Sending build context to Docker daemon  6.144kB
Step 1/7 : FROM python
 ---> ddb6e9772fb2
Step 2/7 : RUN pip3 install flask
 ---> Running in 5e3d6759f083
Collecting flask
  Obtaining dependency information for flask from https://files.pythonhosted.org/packages/36/42/015c23096649b908c809c69388a805a571a3bea44362fe87e33fc3afa01f/flask-3.0.0-py3-none-any.whl.metadata
  Downloading flask-3.0.0-py3-none-any.whl.metadata (3.6 kB)
Collecting Werkzeug>=3.0.0 (from flask)
  Obtaining dependency information for Werkzeug>=3.0.0 from https://files.pythonhosted.org/packages/c3/fc/254c3e9b5feb89ff5b9076a23218dafbc99c96ac5941e900b71206e6313b/werkzeug-3.0.1-py3-none-any.whl.metadata
  Downloading werkzeug-3.0.1-py3-none-any.whl.metadata (4.1 kB)
Collecting Jinja2>=3.1.2 (from flask)
  Obtaining dependency information for Jinja2>=3.1.2 from https://files.pythonhosted.org/packages/30/6d/6de6be2d02603ab56e72997708809e8a5b0fbfee080735109b40a3564843/Jinja2-3.1.3-py3-none-any.whl.metadata
  Downloading Jinja2-3.1.3-py3-none-any.whl.metadata (3.3 kB)
Collecting itsdangerous>=2.1.2 (from flask)
  Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting click>=8.1.3 (from flask)
  Obtaining dependency information for click>=8.1.3 from https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl.metadata
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting blinker>=1.6.2 (from flask)
  Obtaining dependency information for blinker>=1.6.2 from https://files.pythonhosted.org/packages/fa/2a/7f3714cbc6356a0efec525ce7a0613d581072ed6eb53eb7b9754f33db807/blinker-1.7.0-py3-none-any.whl.metadata
  Downloading blinker-1.7.0-py3-none-any.whl.metadata (1.9 kB)
Collecting MarkupSafe>=2.0 (from Jinja2>=3.1.2->flask)
  Obtaining dependency information for MarkupSafe>=2.0 from https://files.pythonhosted.org/packages/51/94/9a04085114ff2c24f7424dbc890a281d73c5a74ea935dc2e69c66a3bd558/MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.9 kB)
Downloading flask-3.0.0-py3-none-any.whl (99 kB)
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 248, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 161, in resolve
    self.factory.preparer.prepare_linked_requirements_more(reqs)
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 565, in prepare_linked_requirements_more
    self._complete_partial_requirements(
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 479, in _complete_partial_requirements
    for link, (filepath, _) in batch_download:
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/network/download.py", line 183, in __call__
    for chunk in chunks:
  File "/usr/local/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py", line 52, in _rich_progress_bar
    with progress:
  File "/usr/local/lib/python3.12/site-packages/pip/_vendor/rich/progress.py", line 1169, in __enter__
    self.start()
  File "/usr/local/lib/python3.12/site-packages/pip/_vendor/rich/progress.py", line 1160, in start
    self.live.start(refresh=True)
  File "/usr/local/lib/python3.12/site-packages/pip/_vendor/rich/live.py", line 132, in start
    self._refresh_thread.start()
  File "/usr/local/lib/python3.12/threading.py", line 992, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread

[notice] A new release of pip is available: 23.2.1 -> 23.3.2
[notice] To update, run: pip install --upgrade pip
The command '/bin/sh -c pip3 install flask' returned a non-zero code: 2
Unable to find image 'app-sample:latest' locally
docker: Error response from daemon: pull access denied for app-sample, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
5e3d6759f083        ddb6e9772fb2        "/bin/sh -c 'pip3 in…"   5 seconds ago        Exited (2) 1 second ago                             musing_bardeen
2ebb0c374458        ddb6e9772fb2        "/bin/sh -c 'pip ins…"   About a minute ago   Exited (2) About a minute ago                       lucid_proskuriakova
690e039e6fcb        ddb6e9772fb2        "/bin/sh -c 'pip ins…"   8 minutes ago        Exited (2) 8 minutes ago                            keen_rhodes
cf9d66d914c6        ddb6e9772fb2        "/bin/sh -c 'pip ins…"   15 minutes ago       Exited (2) 14 minutes ago                           youthful_kepler
afd7de0df32f        ddb6e9772fb2        "/bin/sh -c 'pip ins…"   15 minutes ago       Exited (2) 15 minutes ago                           thirsty_galileo
f684e8c88497        ddb6e9772fb2        "/bin/sh -c 'pip ins…"   21 hours ago         Exited (2) 21 hours ago                             gracious_wescoff
5d0a5a14a24e        ddb6e9772fb2        "/bin/sh -c 'pip ins…"   21 hours ago         Exited (2) 21 hours ago                             silly_perlman

用于执行 Docker 构建等的 Bash 文件:

#!/bin/bash

mkdir tempdir
mkdir tempdir/templates
mkdir tempdir/static

cp sample_app.py tempdir/.
cp -r templates/* tempdir/templates/.
cp -r static/* tempdir/static/.

echo "FROM python" > tempdir/Dockerfile
echo "RUN pip3 install flask" >> tempdir/Dockerfile
echo "COPY ./static /home/myapp/static/" >> tempdir/Dockerfile
echo "COPY ./templates /home/myapp/templates/" >> tempdir/Dockerfile
echo "COPY sample_app.py /home/myapp/" >> tempdir/Dockerfile

echo "EXPOSE 8080" >> tempdir/Dockerfile
echo "CMD python3 /home/myapp/sample_app.py" >> tempdir/Dockerfile

cd tempdir
docker build -t app-sample .
docker run -t -d -p 8080:8080 --name samplerunning app-sample
docker ps -a

我在没有容器的情况下执行了该应用程序,并且运行良好。所以我想这不是问题的一部分。根据我的理解,docker 错误是第一个错误的结果。

如果有必要,所有这些都发生在虚拟机中。

安装 falsk 时失败。有人可以帮我吗?非常感谢大家:)

PS:我对 Docker 不太熟悉,所以如果您需要一些额外的信息,请告诉我。

docker flask containers
1个回答
0
投票

我找到了解决该问题的方法。我添加了一个python版本,这迫使docker容器再次拉取它。

echo "FROM python:3.8-alpine" > tempdir/Dockerfile

pip 安装现在可以正常工作了。

© www.soinside.com 2019 - 2024. All rights reserved.