我在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几乎没有经验,因为我遵循了相同的程序。请帮助
2条答案
按热度按时间gcmastyq1#
确保Docker容器上的端口8000在docker-compose.yml文件中正确Map到本地机器上的端口8000。
8xiog9wr2#
您的
Dockerfile
和docker-compose.yml
配置在我看来都是正确的。我发现的唯一一个问题是你在Docker容器中运行的Django应用程序在本地接口上启动了Web服务器,即
127.0.0.1
。这使得你的浏览器无法从主机到达服务器。简单的修复方法是在
0.0.0.0:8000
地址上启动Django。不要忘记在进行任何更改后通过运行docker compose restart analyzer
重新启动Docker容器。可能还有其他一些问题需要研究。不要犹豫,随时更新您的问题信息。