无法在 docker-compose 中给定的端口上的浏览器中打开 localhost

Prz*_*icz 0 python django containers docker docker-compose

我正在尝试使用 docker 和 docker-compose 构建并运行 django 应用程序。\ndocker-compose build example_appdocker-compose run example_app运行时没有错误,但是当我转到http://127.0.0.1:8000/页面未打开时,我只是在浏览器中收到“页面不可用”错误。\ nHere 是我的 Dockeffile、docker-compose.yml 和项目结构

\n

Dockerfile

\n
FROM python:3.9-buster\n\nRUN mkdir app\nWORKDIR /app\nCOPY ./requirements.txt /app/requirements.txt\nCOPY ./requirements_dev.txt /app/requirements_dev.txt\nRUN pip install --upgrade pip\nRUN pip install -r /app/requirements.txt\n
Run Code Online (Sandbox Code Playgroud)\n

docker-compose.yml

\n
version: '3'\n\nservices:\n  example_app:\n    image: example_app\n    build:\n      context: ../\n      dockerfile: ./docker/Dockerfile\n    command: bash -c "cd app_examples/drf_example && python manage.py runserver"\n    volumes:\n      - ..:/app\n    ports:\n      - 8000:8000\n
Run Code Online (Sandbox Code Playgroud)\n

项目结构:

\n
\xe2\x94\x80\xe2\x94\x80app\n\xe2\x94\x80\xe2\x94\x80app_examples/drf_example/\n  \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80manage.py\n  \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80api\n  \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80drf_example\n\xe2\x94\x80\xe2\x94\x80requirements.txt\n\xe2\x94\x80\xe2\x94\x80requirements_dev.txt\n\xe2\x94\x80\xe2\x94\x80docker/\n  \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80docker-compose.yml\n  \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Dockerfile\n
Run Code Online (Sandbox Code Playgroud)\n

Han*_*ian 6

默认情况下,Django 应用程序绑定到 127.0.0.1,这意味着它们只接受来自本地计算机的连接。在容器上下文中,本地计算机是容器,因此您的应用程序不会接受来自容器外部的连接。

要让它接受来自任何地方的连接,请将绑定地址添加到runserver命令中。在您的情况下,您可以将 docker-compose.yml 文件中的命令更改为

command: bash -c "cd app_examples/drf_example && python manage.py runserver 0.0.0.0:8000"
Run Code Online (Sandbox Code Playgroud)