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

webghufk  于 2023-03-09  发布在  Go
关注(0)|答案(3)|浏览(149)

我尝试用docker和docker-composite构建和运行django应用程序。docker-compose build example_appdocker-compose run example_app运行时没有错误,但当我转到http://127.0.0.1:8000/时,页面没有打开,我只是在浏览器中得到“页面不可用”的错误。
停靠文件

FROM python:3.9-buster

RUN mkdir app
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
COPY ./requirements_dev.txt /app/requirements_dev.txt
RUN pip install --upgrade pip
RUN pip install -r /app/requirements.txt

docker-compose.yml

version: '3'

services:
  example_app:
    image: example_app
    build:
      context: ../
      dockerfile: ./docker/Dockerfile
    command: bash -c "cd app_examples/drf_example && python manage.py runserver"
    volumes:
      - ..:/app
    ports:
      - 8000:8000

项目结构:

──app
──app_examples/drf_example/
  ────manage.py
  ────api
  ────drf_example
──requirements.txt
──requirements_dev.txt
──docker/
  ────docker-compose.yml
  ────Dockerfile
u2nhd7ah

u2nhd7ah1#

默认情况下,Django apps bind 到127.0.0.1意味着它们只接受来自本地机器的连接。在容器上下文中,本地机器是容器,所以你的应用不会接受来自容器外部的连接。
要让它接受来自任何地方的连接,可以将bind地址添加到runserver命令中。

command: bash -c "cd app_examples/drf_example && python manage.py runserver 0.0.0.0:8000"
7bsow1i6

7bsow1i62#

在我的例子中,当使用docker compose run应用程序而不是docker compose up时,我必须使用--service-ports标志,如下所示:

docker compose run --service-ports app

我的博客.yml:

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    env_file: .env
    volumes:
      - .:/app
    ports:
      - "${DJANGO_BIND_PORT}:${DJANGO_BIND_PORT}"
    command: [
      "./scripts/start-development.sh"]

我的./脚本/.env:

DJANGO_BIND_PORT=8000

我的./脚本/start-development.sh:

set -e

python manage.py makemigrations
python manage.py migrate
python manage.py seed_db --create-super-user

python manage.py runserver 0.0.0.0:${DJANGO_BIND_PORT:-8000}

相关文件
相关Docker compose git thread及更多信息

42fyovps

42fyovps3#

您需要在Docker文件中公开端口8000

FROM python:3.9-buster

EXPOSE 8000

RUN mkdir app
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
COPY ./requirements_dev.txt /app/requirements_dev.txt
RUN pip install --upgrade pip
RUN pip install -r /app/requirements.txt

相关问题