Docker上的Django应用程序正在启动,但浏览器给出空响应,本地主机不发送任何数据

rbpvctlc  于 12个月前  发布在  Docker
关注(0)|答案(2)|浏览(176)

我在Windows上用Django、Python 3和Docker创建了一个简单的应用程序:

Dockerfile

FROM python:3.7.6

ENV PYTHONUNBUFFERED 1

RUN mkdir /code

WORKDIR /code

COPY requirements.txt /code/

RUN pip install -r requirements.txt

COPY . /code/

字符串

docker-compose.yml

version: '3.2.22'

services:
  analyzer:
    build:
      context: ./analyser
    command: bash -c "python ./analyser/manage.py migrate && python ./analyser/manage.py runserver 8000"
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    restart: always


在我的例子中,我不需要一个DB。所以我没有添加它的细节和'depends_on'。我读过一些类似的问题,比如检查文件名。我的文件名是'Dockerfile'和'docker-compose. yml'。我想我没有任何文件名问题。我试过这样'python ./analyser/manage.py runserver 0.0.0.0:8000',但似乎也不起作用
看起来Docker正在启动,但从我的浏览器中,我得到了这样的响应

[+] Building 0.0s (0/0)                                                                                                                                                                                 docker:default
[+] Running 1/1
 ✔ Container version_1-analyser-1  Recreated                                                                                                                                                            0.1s 
Attaching to version_1-analyser-1
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
No migrations to apply.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
December 18, 2023 - 10:33:49
Django version 3.2.22, using settings 'analyser.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.


但是当我在浏览器中使用链接时,它显示:

localhost didn’t send any data.
ERR_EMPTY_RESPONSE


我很困惑我错过了什么。我对Docker几乎没有经验,因为我遵循了相同的程序。请帮助

gcmastyq

gcmastyq1#

确保Docker容器上的端口8000在docker-compose.yml文件中正确Map到本地机器上的端口8000。

8xiog9wr

8xiog9wr2#

您的Dockerfiledocker-compose.yml配置在我看来都是正确的。
我发现的唯一一个问题是你在Docker容器中运行的Django应用程序在本地接口上启动了Web服务器,即127.0.0.1。这使得你的浏览器无法从主机到达服务器。
简单的修复方法是在0.0.0.0:8000地址上启动Django。不要忘记在进行任何更改后通过运行docker compose restart analyzer重新启动Docker容器。
可能还有其他一些问题需要研究。不要犹豫,随时更新您的问题信息。

相关问题