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

Docker容器运行Python应用无法访问网页问题求助

问题排查与解决

核心问题分析

你的问题主要来自两个方面:Docker Compose配置的YAML格式错误,以及Dockerfile中文件复制的路径逻辑错误,导致容器内的命令无法正确找到并运行manage.py。

步骤1:修复Docker Compose的YAML缩进

YAML对缩进要求严格,原配置的缩进错误会导致服务无法正确启动。修正后的docker-compose.yml如下:

version: "2.12.2"

services:
  web:
    tty: true
    build:
      dockerfile: Dockerfile
      context: .
    command: bash -c "cd happy_traveller && python manage.py runserver 0.0.0.0:8000"
    ports:
      - 8000:8000
    restart: always

注意:所有子项(web、tty、build、ports等)都需要相对于父项缩进2个空格,build下的dockerfile和context也要再缩进一层。

步骤2:修正Dockerfile的文件复制逻辑

原Dockerfile的复制顺序和路径会导致容器内的文件结构混乱,manage.py的位置与command中的路径不匹配。修正后的Dockerfile如下:

FROM python:3.10
EXPOSE 8000
WORKDIR /app

# 先复制依赖文件,利用Docker缓存层优化构建速度
COPY requirements.txt .
RUN pip install -r requirements.txt

# 复制项目核心代码到容器内的对应目录
COPY happy_traveller ./happy_traveller
# 复制其他根目录文件(可选,根据需要调整)
COPY . .

这个配置会在容器内创建/app/happy_traveller目录,与你本地的项目结构一致,确保command中的cd happy_traveller能找到正确的路径和manage.py文件。

步骤3:重新构建并运行容器

执行以下命令清理旧容器并重新构建:

# 停止并删除旧容器
docker-compose down
# 重新构建镜像并启动容器
docker-compose up --build

额外验证点

  • 检查容器是否正常启动:执行docker-compose logs web查看日志,如果出现Starting development server at http://0.0.0.0:8000/则说明服务正常运行。
  • 确认settings.py中的ALLOWED_HOSTS包含0.0.0.0或*(开发环境下),避免因主机白名单限制导致无法访问:
    ALLOWED_HOSTS = ['0.0.0.0', 'localhost']
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:31:00