Docker容器运行正常但本地端口无法访问问题求助
问题排查与配置修正
核心问题分析
- Django
runserver默认仅监听容器内的127.0.0.1,宿主机无法直接访问容器内部的回环地址,必须让服务监听0.0.0.0才能对外暴露。 - docker-compose.yml 存在两个问题:
- 多阶段构建的
target: builder无对应 Dockerfile 阶段,属于无效配置 - YAML 缩进错误(services 前的多余空格会导致解析失败)
- 多阶段构建的
修正后的配置文件
Dockerfile
调整 CMD 命令,指定监听 0.0.0.0:
FROM python:3 ENV PYTHONUNBUFFERED=1 WORKDIR /code COPY requirements.txt . RUN pip install -r requirements.txt COPY . . ENV PORT=8000 EXPOSE 8000 # 修改为监听0.0.0.0,允许容器外部访问 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
docker-compose.yml
修正缩进并移除无效的 target 配置:
services: web: build: context: app # 确保app目录是你的Django项目根目录,包含Dockerfile和代码 ports: - '8000:8000' # 可选:添加环境变量,确保Django识别端口 environment: - PORT=8000
验证步骤
- 停止并清理旧容器:
docker-compose down - 重新构建并启动服务:
docker-compose up --build - 访问宿主机的
localhost:8000或127.0.0.1:8000测试
内容的提问来源于stack exchange,提问作者alecnazzy
相关产品推荐
相关产品推荐

