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

Ubuntu 22.04 LTS上Docker-Compose网络解析问题求助

问题排查与解决方案

1. 优先解决 exec format error 容器启动失败问题

这个错误的核心原因是架构不兼容:你在M1(ARM64架构)本地构建的Docker镜像,指令集和Ubuntu 22.04服务器的x86_64架构不匹配,导致容器无法执行二进制文件。

解决方法二选一:

  • 方案一:在Ubuntu服务器上重新构建镜像
    进入代码目录执行,让服务器基于自身x86_64环境构建适配的镜像:
    docker-compose build --no-cache
    
  • 方案二:本地构建多架构镜像适配双平台
    1. 启用Docker Buildx工具:
      docker buildx create --use
      
    2. 修改docker-compose.yaml中Django服务的build配置,指定目标架构:
      services:
        django-app:
          build:
            context: .
            platform: linux/amd64
      
    3. 本地构建后推送到镜像仓库,再在服务器拉取部署。

2. 解决PostgreSQL主机名解析失败问题

当exec format error修复后,若仍存在主机解析问题,检查以下几点:

  • 确认Django服务与PostgreSQL服务处于同一网络:
    无论是docker-compose自动创建的默认网络,还是你手动创建的私有网络,两个服务必须加入同一个网络。示例配置:
    networks:
      app-network:
        driver: bridge
    
    services:
      django-app:
        networks:
          - app-network
      postgresql:
        networks:
          - app-network
    
  • 检查application.env中的数据库主机配置,必须与docker-compose里PostgreSQL服务的service name完全一致:
    DB_HOST=postgresql
    DB_PORT=5432
    
  • 确保PostgreSQL服务先于Django启动:
    在Django服务配置中添加启动依赖:
    django-app:
      depends_on:
        - postgresql
    
    注:depends_on仅保证启动顺序,若需等待PostgreSQL完全就绪,可搭配wait-for-it脚本做健康检查。

验证步骤

  1. 清理现有容器与数据卷:
    docker-compose down -v
    
  2. 按上述方法重新构建镜像
  3. 启动服务并查看日志:
    docker-compose up -d
    docker-compose logs django-app
    docker-compose logs postgresql
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:50:36