【发布时间】:2020-11-13 21:17:12
【问题描述】:
我目前正在开发一个关于 Django 的网站。在我的计算机上,我在带有 postgres 数据库的 Docker 上运行它。这是我拥有的 docker-compose 文件:
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
volumes:
- .:/usr/src/app
ports:
- "8000:8000"
这是 settings.py 中的相关部分
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
当我使用此设置在 docker 容器中运行我的测试时,它可以找到并运行测试。但是,在 github 操作中,它不起作用。这是我的工作流程文件:
name: Django CI
on: push
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [3.7, 3.8]
services:
db:
image: postgres
env:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run Tests
run: |
python manage.py test
当它在 github 操作中运行时,我收到以下错误:
django.db.utils.OperationalError: could not translate host name "db" to address: Temporary failure in name resolution
有人可以帮我解决这个问题,如果您需要更多代码,请告诉我。
【问题讨论】:
-
如果你使用
localhost会发生什么? -
在我的电脑上,我在 127.0.0.1:8000 上运行它,这是 Django 的默认值,它工作正常。
-
我指的是 github 操作
-
哦,谢谢你的建议。出于某种原因,它说
ModuleNotFoundError: No module named 'localhost:8000'。我想也许你不能在测试中指定 localhost?
标签: django github-actions django-testing django-postgresql