【问题标题】:Cannot access running django server?无法访问正在运行的 django 服务器?
【发布时间】:2019-07-08 19:27:51
【问题描述】:

我已经为 django rest 项目创建了一个 docker 镜像,下面有 Dockerfiledocker-compose 文件,

Dockerfile

FROM python:3

# Set environment variables
ENV PYTHONUNBUFFERED 1

COPY requirements.txt /

# Install dependencies.
RUN pip install -r /requirements.txt

# Set work directory.
RUN mkdir /app
WORKDIR /app

# Copy project code.
COPY . /app/

EXPOSE 8000

docker-compose文件


version: "3"

services:     
  dj:
    container_name: dj
    build: django
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./django:/app
    ports:
      - "8000:8000"

docker-compose up 命令像这样启动服务器,

但在网络浏览器中我无法访问服务器,浏览器显示ERR_ADDRESS_INVALID

Docker 版本 18.09.2

【问题讨论】:

  • 您使用的是什么网址?你得到什么错误?你有什么版本/风格的 Docker?
  • 我使用这个作为 url http://0.0.0.0:8000 并且浏览器说网站无法访问
  • 0.0.0.0 是“无处不在”的 IPv4;您通常无法与其建立出站连接。如果您有 Docker 桌面应用程序,请尝试http://localhost:8000;如果是 Docker Toolbox,你需要docker-machine ip 地址,通常是http://192.168.99.100:8000
  • @DavidMaze 明白了,http://localhost:8000 网址有效! thanx,但问题在docker-compose 文件中定义0.0.0.0:8000,一旦我尝试127.0.0.1,它说权限被拒绝。为什么会这样?
  • 每个容器都有自己的localhost 概念。如果你在容器中设置一个进程只监听容器的localhost,它不会接受来自容器外的任何流量。

标签: django docker docker-compose


【解决方案1】:

0.0.0.0 是“无处不在”的 IPv4;您通常无法与其建立出站连接。如果您有 Docker 桌面应用程序,请尝试http://localhost:8000;如果是 Docker Toolbox,则需要 docker-machine ip 地址,通常为http://192.168.99.100:8000

感谢 David Maze 问题解决了。

【讨论】:

  • 但是,我使用127.0.0.1:8000 仍然得到 ERR_CONNECTION_RESET。我能做些什么呢。
猜你喜欢
  • 2020-05-02
  • 2015-08-05
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 2021-12-29
相关资源
最近更新 更多