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 - 方案二:本地构建多架构镜像适配双平台
- 启用Docker Buildx工具:
docker buildx create --use - 修改
docker-compose.yaml中Django服务的build配置,指定目标架构:services: django-app: build: context: . platform: linux/amd64 - 本地构建后推送到镜像仓库,再在服务器拉取部署。
- 启用Docker Buildx工具:
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: - postgresqldepends_on仅保证启动顺序,若需等待PostgreSQL完全就绪,可搭配wait-for-it脚本做健康检查。
验证步骤
- 清理现有容器与数据卷:
docker-compose down -v - 按上述方法重新构建镜像
- 启动服务并查看日志:
docker-compose up -d docker-compose logs django-app docker-compose logs postgresql
内容的提问来源于stack exchange,提问作者CraZyCoDer
相关产品推荐
相关产品推荐

