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

Travis CI中Django测试失败:无法解析主机名'db'

解决Travis CI上Django测试无法解析PostgreSQL主机名'db'的问题

这问题我之前也碰到过,核心原因是Travis CI的PostgreSQL服务运行在虚拟机本地,而非Docker容器环境,所以你配置的主机名db无法被解析——这个主机名通常是Docker Compose中数据库服务的名称,本地用Docker的话能正常解析,但Travis里不适用。

具体解决方案:

1. 调整Travis CI的环境变量配置

在你的.travis.yml中添加env字段,明确指定PostgreSQL的连接参数,把POSTGRES_HOST设为localhost(Travis的PostgreSQL默认监听本地):

dist: bionic
services:
  - postgresql
addons:
  postgresql: '9.5'
apt:
  packages:
    - postgresql-9.5
# 新增全局环境变量配置
env:
  global:
    - POSTGRES_DB=fecundity_test
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=''
    - POSTGRES_HOST=localhost
    - POSTGRES_TEST_DB=fecundity_test
before_script:
  - psql -c 'create database fecundity_test;' -U postgres
branches:
  only:
    - "master"
language: python
python:
  - "3.8"
install:
  - if [ "$TRAVIS_BRANCH" = "master" ]; then pip install -r requirements/dev.txt; fi
  - if [ "$TRAVIS_BRANCH" = "master" ]; then pip install coveralls; fi
script:
  - if [ "$TRAVIS_BRANCH" = "master" ]; then ./scripts/lib/run-ci; fi
after_success:
  - if [ "$TRAVIS_BRANCH" = "master" ]; then coveralls; fi

2. 或者在Django的settings.py中针对Travis环境做适配

如果不想修改Travis配置,也可以在settings.py里判断是否处于Travis环境,自动调整数据库主机:

import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': os.environ['POSTGRES_DB'],
        'USER': os.environ['POSTGRES_USER'],
        'PASSWORD': os.environ['POSTGRES_PASSWORD'],
        'HOST': os.environ['POSTGRES_HOST'],
        'PORT': '',
        'ATOMIC_REQUESTS': True,
        'TEST': {
            'NAME': os.environ['POSTGRES_TEST_DB']
        }
    },
}

# 针对Travis CI环境自动修正主机名
if 'TRAVIS' in os.environ:
    DATABASES['default']['HOST'] = 'localhost'

额外注意事项:

  • 确保POSTGRES_TEST_DB的值和你在before_script中创建的数据库名一致(这里都是fecundity_test),避免测试时找不到数据库。
  • Travis的PostgreSQL默认不需要密码(用户postgres的密码为空),所以POSTGRES_PASSWORD设为空字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:17:44