创建Odoo15 Docker容器遇数据库域名解析失败问题求助
解决Odoo15容器数据库连接失败(无法解析"db"主机名)问题
核心原因
Odoo容器无法在指定的odoonet网络中找到名为db的数据库容器,导致DNS解析失败,进而触发连接错误,容器启动后自动停止。
分步解决方案
1. 验证数据库容器状态与网络归属
检查
db容器是否存在且运行:docker ps -a若
db未运行,执行docker start db启动;若容器不存在,需先创建兼容的Postgres容器(见步骤3)。确认
db容器已加入odoonet网络:docker inspect db | grep -A5 Networks若输出无
odoonet,手动将容器加入网络:docker network connect odoonet db
2. 替换废弃的--link特性
--link是Docker旧版通信方式,当前推荐通过自定义网络实现容器互通。修改启动命令,移除--link db:db并显式指定数据库连接参数:
sudo docker run -v /home/contenedor/config:/etc/odoo \ -v /home/contenedor/odoo:/var/lib/odoo/.local/share/Odoo \ --expose 80 \ --net odoonet \ -e VIRTUAL_HOST=domain.com \ -e VIRTUAL_PORT=8069 \ -e HOST=db \ -e USER=odoo \ -e PASSWORD=odoo \ --name contenedor \ -t odoo:15.0
注意:
USER和PASSWORD必须与Postgres容器的配置完全一致。
3. 创建兼容的Postgres数据库容器(若未创建)
Odoo15适配Postgres 12-13版本,执行以下命令创建db容器:
sudo docker run -d \ --name db \ --net odoonet \ -e POSTGRES_USER=odoo \ -e POSTGRES_PASSWORD=odoo \ -e POSTGRES_DB=postgres \ postgres:13
4. 测试网络连通性
在odoonet网络中启动临时容器,验证db主机的解析能力:
docker run --rm --net odoonet alpine ping -c 3 db
若ping失败,重建网络后重启所有容器:
docker network rm odoonet docker network create odoonet docker start db # 重新启动Odoo容器
5. 查看容器日志定位深层问题
若以上步骤无效,查看Odoo容器完整日志获取细节:
docker logs contenedor
日志可能暴露用户密码不匹配、数据库未初始化等隐藏问题。
内容的提问来源于stack exchange,提问作者IT-Support Colombia
相关产品推荐
相关产品推荐

