【问题标题】:Django can’t establish a connection to the serverDjango 无法建立与服务器的连接
【发布时间】:2021-07-18 19:18:34
【问题描述】:

我在构建后使用 docker 使用 django 启动项目我没有收到任何错误,我完成了我没有收到任何错误但仍然无法连接到服务器

我的 docker ps 返回

CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS         PORTS                               NAMES
385d949fdb65   yacosql_web   "python manage.py ru…"   2 minutes ago    Up 2 minutes   0.0.0.0:8000->8000/tcp              yacosql_web_1
754707984f75   mysql:5.7     "docker-entrypoint.s…"   11 minutes ago   Up 2 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   yacosql_db_1

在 docker-compose up 中:

web_1  | Watching for file changes with StatReloader
web_1  | Performing system checks...
web_1  | 
web_1  | System check identified no issues (0 silenced).
web_1  | 
web_1  | You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
web_1  | Run 'python manage.py migrate' to apply them.
web_1  | April 25, 2021 - 02:44:17
web_1  | Django version 2.2, using settings 'yacosql.settings'
web_1  | Starting development server at http://127.0.0.1:7777/
web_1  | Quit the server with CONTROL-C.

我的 docker-compose.yml :

version: "3.3"
   
services:
  db:
    image: mysql:5.7
    ports:
      - '3306:3306'
    environment:
       MYSQL_DATABASE: yacosql
       MYSQL_USER: yacosql
       MYSQL_PASSWORD: yacosql
       MYSQL_ROOT_PASSWORD: yacosql
  web:
    build:
        context: .
        dockerfile: ./docker/Dockerfile
    command: python manage.py runserver 127.0.0.1:7777
    volumes:
      - .:/usr/src/app
    ports:
      - "8000:7777"
    depends_on:
      - db

requirements.txt:

Django==2.2
mysqlclient==2.0.3
django-mysql==3.9.0

码头工人/码头工人文件

# syntax=docker/dockerfile:1
FROM python:3.6
ENV PYTHONUNBUFFERED=1
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . /usr/src/app

【问题讨论】:

    标签: python-3.x django docker docker-compose


    【解决方案1】:

    解释

    python manage.py runserver 127.0.0.1:7777
    

    在容器中使用上述命令将使 Django 服务器监听环回。有关更多详细信息,您可以阅读此explaination

    指定监听0.0.0.0:7777的Django服务器可以解决。

    分辨率

    你的docker-compose.yaml应该修改如下:

    version: "3.3"
       
    services:
      db:
        image: mysql:5.7
        ports:
          - '3306:3306'
        environment:
           MYSQL_DATABASE: yacosql
           MYSQL_USER: yacosql
           MYSQL_PASSWORD: yacosql
           MYSQL_ROOT_PASSWORD: yacosql
      web:
        build:
            context: .
            dockerfile: ./docker/Dockerfile
        command: python manage.py runserver 0.0.0.0:7777  # this line is modified.
        volumes:
          - .:/usr/src/app
        ports:
          - "8000:7777"
        depends_on:
          - db
    

    docker-compose up 之后,您可以通过执行docker ps 看到您的Web 服务正在运行。结果应该类似于:

    CONTAINER ID   IMAGE                                 COMMAND                  CREATED         STATUS         PORTS                                                                                                                                  NAMES
    1c6253f87494   so1_web                               "python manage.py ru…"   8 minutes ago   Up 4 minutes   0.0.0.0:8000->7777/tcp
    

    现在您可以尝试连接到您的服务。试试命令:

    curl 127.0.0.1:8000
    

    如果一切正常,您将得到预期的响应。

    其他

    我已将the source code 推送到 GitHub。它在我的电脑上按预期工作。你可以随意克隆。

    【讨论】:

    • 我得到了同样的东西can’t establish a connection to the server at 0.0.0.0:7777.
    • 听起来很伤心。更多日志可能会有所帮助。
    • 对了,我在 Docker compose 中找到了 Django 的快速入门。希望它是有帮助的。 docs.docker.com/samples/django
    • 那个文档我知道但是那个文档使用的是 postgres 但我想使用 mysql
    • 我相信我找到了您遇到的问题的原因。也许我的解释有歧义,所以我重新编辑了它。希望对您有所帮助。
    猜你喜欢
    • 2020-04-06
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2018-08-09
    • 1970-01-01
    • 2021-03-02
    • 2015-06-13
    相关资源
    最近更新 更多