Django 无法连接到服务器:连接被拒绝服务器是否在主机上运行;“数据库”;(172.19.0.3)并在端口5432上接受TCP/IP连接?
我试图在Gitlab CI上运行Django测试,但出现了这个错误,上周它运行得很好,但突然在测试运行期间出现了这个错误 django.db.utils.OperationalError:无法连接到服务器:连接被拒绝 服务器是否在主机“数据库”(172.19.0.3)上运行并接受 端口5432上的TCP/IP连接 我的gitlab ci文件如下所示Django 无法连接到服务器:连接被拒绝服务器是否在主机上运行;“数据库”;(172.19.0.3)并在端口5432上接受TCP/IP连接?,django,docker,docker-compose,continuous-integration,gitlab-ci,Django,Docker,Docker Compose,Continuous Integration,Gitlab Ci,我试图在Gitlab CI上运行Django测试,但出现了这个错误,上周它运行得很好,但突然在测试运行期间出现了这个错误 django.db.utils.OperationalError:无法连接到服务器:连接被拒绝 服务器是否在主机“数据库”(172.19.0.3)上运行并接受 端口5432上的TCP/IP连接 我的gitlab ci文件如下所示 image: docker:latest services: - docker:dind variables: DOCKER_HOST:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
test:
stage: test
image: tiangolo/docker-with-compose
script:
- docker-compose -f docker-compose.yml build
- docker-compose run app python3 manage.py test
我的docker撰写如下:
version: '3'
volumes:
postgresql_data:
services:
database:
image: postgres:12-alpine
environment:
- POSTGRES_DB=test
- POSTGRES_USER=test
- POSTGRES_PASSWORD=123
- POSTGRES_HOST=database
- POSTGRES_PORT=5432
volumes:
- postgresql_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -e \"SHOW DATABASES;\""]
interval: 5s
timeout: 5s
retries: 5
ports:
- "5432"
restart: on-failure
app:
container_name: proj
hostname: proj
build:
context: .
dockerfile: Dockerfile
image: sampleproject
command: >
bash -c "
python3 manage.py migrate &&
python3 manage.py wait_for_db &&
gunicorn sampleproject.wsgi:application -c ./gunicorn.py
"
env_file: .env
ports:
- "8000:8000"
volumes:
- .:/srv/app
depends_on:
- database
- redis
那么为什么它拒绝连接呢?我不知道,它在上周工作。你能做一个
docker容器ls
并检查数据库的容器名称是否为“数据库”吗?
您已经跳过了为该容器设置
容器\u名称
,这可能是因为docker没有使用服务的默认名称创建它,即“数据库”,因此,DNS无法在网络中的该名称下找到它。您能否执行docker容器ls
并检查数据库的容器名称是否为“数据库”?
您已跳过设置该容器的
容器名称
,这可能是因为docker没有使用服务的默认名称(即“数据库”)创建该容器,因此DNS无法在网络中的该名称下找到它。重新启动服务器。当我运行多个使用postgres的容器时,我会在Mac和Linux上不时遇到类似的错误。重新启动服务器。当我运行多个使用postgres的容器时,我在Mac和Linux上不时会遇到类似的错误。不确定这对您的情况是否有帮助,但我在docker compose上遇到了同样的问题。对我来说,解决这个问题的办法是明确指定postgres的主机名
services:
database:
image: postgres:12-alpine
hostname: database
environment:
- POSTGRES_DB=test
- POSTGRES_USER=test
- POSTGRES_PASSWORD=123
- POSTGRES_HOST=database
- POSTGRES_PORT=5432
...
不确定这对你的情况是否有帮助,但我对docker compose也有同样的问题。对我来说,解决这个问题的办法是明确指定postgres的主机名
services:
database:
image: postgres:12-alpine
hostname: database
environment:
- POSTGRES_DB=test
- POSTGRES_USER=test
- POSTGRES_PASSWORD=123
- POSTGRES_HOST=database
- POSTGRES_PORT=5432
...
它在本地工作很好。但如何在Gitlab上检查这个问题呢?因为我对数据库的服务是“数据库”,所以我在数据库中使用它,它在本地运行良好。但如何在Gitlab上检查这个问题呢?由于我为数据库提供的服务是“数据库”,所以我在数据库中使用它。在迁移之前,是否需要
等待\u db
?数据库容器真的启动了吗?@DavidMaze不确定,先生。我如何检查gitlb ci容器是否已启动?因为我只是在运行测试?在迁移之前,是否需要等待\u db
?数据库容器真的启动了吗?@DavidMaze不确定,先生。我如何检查gitlb ci容器是否已启动?因为我正在运行测试?如何重新启动gitlab CI?如何重新启动gitlab CI?