You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose可编译Django项目但无法访问本地HTTPS链接

解决Docker容器中Django HTTPS开发服务无法访问的问题

核心修复步骤

1. 修改服务绑定地址

容器内的runserver_plus默认绑定127.0.0.1,仅容器内部可访问,需改为绑定0.0.0.0以允许外部主机连接:

更新docker-compose.yml的command字段:

command: python manage.py runserver_plus 0.0.0.0:8000 --cert-file cert.pem --key-file key.pem

2. 配置Django允许访问的主机

Django默认限制主机访问,需在settings.py中添加允许的主机(开发环境可简化配置):

ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', 'localhost']
# 开发环境临时简化:ALLOWED_HOSTS = ['*']

3. 确保SSL证书可被容器读取

  • 若本地已生成cert.pem和key.pem,需将文件放在项目根目录(与docker-compose.yml同目录),通过已配置的volumes: - .:/usr/src/app,容器会自动挂载这些文件到工作目录。
  • 若容器内无证书,runserver_plus启动时会自动生成,首次启动需等待片刻完成证书创建。

4. 验证端口与网络

  • 检查本地端口8000是否被占用:Linux/macOS用lsof -i :8000,Windows用netstat -ano | findstr :8000,占用则更换端口(如docker-compose.yml中改为"8001:8000",访问时用https://127.0.0.1:8001)。

修正后的完整配置示例

docker-compose.yml

version: "3.8"
   
services:
    django:
        build: .
        container_name: frontend
        command: python manage.py runserver_plus 0.0.0.0:8000 --cert-file cert.pem --key-file key.pem
        volumes:
            - .:/usr/src/app
        ports:
            - "8000:8000"
        depends_on:
            - pgdb
    pgdb:
        image: postgres
        container_name: backend
        environment:
            - POSTGRES_DB=postgres
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=postgres

settings.py(新增ALLOWED_HOSTS)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'location',
    'rest_framework',
    'django_extensions',
]

ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1']

修改完成后,执行docker-compose down && docker-compose up --build,即可通过https://127.0.0.1:8000访问容器内的Django服务。

内容的提问来源于stack exchange,提问作者user124e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:54:55