【问题标题】:Error: can't chdir to 'app' when using docker start container [closed]错误:使用 docker start 容器时无法 chdir 到 'app' [关闭]
【发布时间】:2023-03-14 16:24:01
【问题描述】:

我已经构建了一个简单的 Flask 应用程序并尝试在 Docker 上运行它,但在启动容器时出现此错误:Error: can't chdir to 'app'

当我从 cmd 启动应用程序时,它运行良好,但是当我尝试为我创建的图像启动 docker 容器时,它给出了上述错误。

这是 Docker 文件:

FROM python:3.6.12-alpine
COPY requirements.txt /
RUN pip3 install -r /requirements.txt

COPY . /app
WORKDIR /app
RUN chmod 777 /app

ENTRYPOINT ["./gunicorn.sh"]

我正在尝试使用 gunicorn 网络服务器运行它。在我的需求文件中,我有烧瓶和 gunicorn,对于 python 应用程序,我只有一个文件,代码如下:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello, World!'

我正在执行以下步骤来构建映像和容器:

  1. docker build -t 烧瓶。
  2. docker run -d -p 80:80 烧瓶
  3. docker start -ai(容器ID)
  4. 我收到我提到的错误 -> 错误:无法 chdir 到 'app'

有人可以告诉我为什么容器没有启动并且给我这个错误吗?谢谢

【问题讨论】:

  • 当前文件夹(.)的目录/文件树是什么?
  • C:\flask\Example\app
  • 是C:\flask\Example或C:\flask\Example\app中的Dockerfile吗?
  • C:\flask\Example\app
  • gunicorn.sh 内部的问题。你能分享它(和项目文件树可取)吗?

标签: python docker flask dockerfile gunicorn


【解决方案1】:

您不需要change directory。 --chdir app 参数是不必要的。因为你已经在/app 目录中(你还记得WORKDIR /app 在Dockerfile 中吗?)。

通过其他方式,您可以使用--chdir /app 或--chdir . 将目录(如果默认不起作用)更改为当前工作目录

改成

#!/bin/sh

gunicorn app:app -w 2 --threads 2 -b 0.0.0.0:80

# OR

gunicorn --chdir /app app:app -w 2 --threads 2 -b 0.0.0.0:80

# OR

gunicorn --chdir . app:app -w 2 --threads 2 -b 0.0.0.0:80

RUN chmod 777 /app也不需要

【讨论】:

  • 谢谢我尝试了 gunicorn.sh 的第一个选项,它可以工作。非常感谢
猜你喜欢
  • 2013-09-05
  • 2020-10-27
  • 2020-08-18
  • 2017-01-03
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
相关资源
最近更新 更多