python - 错误: can't chdir to 'app' when using docker start container

标签 python docker flask dockerfile gunicorn

我已经构建了一个简单的 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 Web 服务器运行它。在我的需求文件中,我有 Flask 和 Gunicorn,对于 Python 应用程序,我只有一个文件,下面是代码:

from flask import Flask
app = Flask(__name__)

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

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

  1. docker build -t flask 。
  2. docker run -d -p 80:80 flask
  3. docker start -ai(容器的id)
  4. 我收到了我提到的错误 -> 错误:无法 chdir 到“app”

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

最佳答案

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

您可以通过其他方式将目录(如果默认不起作用)更改为当前工作目录,方法是使用 --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 也不必要

关于python - 错误: can't chdir to 'app' when using docker start container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68281296/

相关文章:

python - 运行 for 循环并跳过股票 'KeyError' : Date

python Pandas : Merge two tables without keys (Multiply 2 dataframes with broadcasting all elements; NxN dataframe)

Python:关于 "numpy.ndarray"的两个问题

docker - 如何在EKS中获取容器主机ip地址和容器名称

docker - 为什么我无法通过 Docker 访问 NiFi 流的开放 HTTP 端口?

python - Flask 请求 : determine exact path, 包括是否有问号

python - 如果在 + python 中没有传递参数,我如何分配默认值

spring - 尝试使用Nginx和docker将Spring引导中的LetsEncrypt添加到域时发生未经授权的错误

android - Flask POST 400 访问请求 JSONObject 时出错

python - 运行各种 Flask/Python 脚本时,本地主机已停止更新,如何修复此问题?