我已经构建了一个简单的 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!'
我正在执行以下步骤来构建图像和容器:
- docker build -t flask 。
- docker run -d -p 80:80 flask
- docker start -ai(容器的id)
- 我收到了我提到的错误 -> 错误:无法 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/