gpt4 book ai didi

django - 使用 Docker 在本地运行 Django/Gunicorn 应用程序失败并显示 ERR_CONNECTION_REFUSED

转载 作者:行者123 更新时间:2023-12-02 19:14:28 26 4
gpt4 key购买 nike

此处显示的我的 Dockerfile 部署到 Google App Engine flex 并且运行没有问题。

FROM gcr.io/google-appengine/python
RUN apt-get update && apt-get install -y \
binutils \
gdal-bin \
python-gdal
RUN virtualenv /env -p python3.6
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
RUN mkdir -p -m775 uploads
ADD . /app
CMD exec gunicorn -b :$PORT mysite.wsgi
我还可以通过进入虚拟环境在本地运行应用程序,并且:
python manage.py runserver
这使我可以在浏览器中在 http://localhost:8000/上查看它,并且还可以在本地访问 API。
但是, 我的问题是当我使用 docker 在本地运行应用程序时。 当我去 http://0.0.0.0:8000/ ,我总是收到“ERR_CONNECTION_REFUSED”错误。
我尝试了各种迭代:
docker run --entrypoint=/bin/bash django -c "python manage.py
runserver 0.0.0.0:8000"
docker run --entrypoint=/bin/bash django -c "p["gunicorn", "--bind", ":8000", "--workers", "3", "mysite.wsgi:application"]
docker run --detach -p 8080:8000 --name django django
我已经尝试将我的 Docker 文件 cmd (并重建图像)更改为:
CMD ["python", "manage.py", "runserver", "0.0.0.0", "8000"]
ENTRYPOINT [ "python", "manage.py" ]
#CMD [ "runserver", "127.0.0.1:8000" ]
CMD [ "runserver", "0.0.0.0:8000" ]
但不断收到相同的“ERR_CONNECTION_REFUSED”错误
我已经解决了所有我能找到的与 SO 相关的问题,并尝试了建议的内容,包括这个 Docker - Can't access Django server
我正在运行 ubuntu 18.04。这是我的 docker 版本:
Client:
Version: 19.03.6
API version: 1.40
Go version: go1.12.17
Git commit: 369ce74a3c
Built: Fri Feb 28 23:45:43 2020
OS/Arch: linux/amd64
Experimental: false

Server:
Engine:
Version: 19.03.6
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: 369ce74a3c
Built: Wed Feb 19 01:06:16 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.3-0ubuntu1~18.04.2
GitCommit:
runc:
Version: spec: 1.0.1-dev
GitCommit:
docker-init:
Version: 0.18.0
GitCommit:
非常感谢您提供的任何帮助。

最佳答案

我误解了 docker 是如何以两种方式工作的。
首先,我颠倒了 docker run 命令的 -p 参数上的端口。
Django 监听 8080,所以运行命令应该是 docker run --detach -p 8000:8080 --name django django而不是 -p 8080:8000 .我的第二个错误是我认为我需要监听 0.0.0.0:8000 的容器端口,但是 -p 将容器的端口 8080 绑定(bind)到 TCP 端口 8000,所以 localhost:8000 是我需要监听的地方。

关于django - 使用 Docker 在本地运行 Django/Gunicorn 应用程序失败并显示 ERR_CONNECTION_REFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64294528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com