首页 文章

docker compose无法使用django连接postgresql数据库

提问于
浏览
2

我的django应用程序无法连接到postgresql . 我正在使用Dockerfile进行django并使用docker-compose和postgres官方图像进行构建 .

泊坞窗,compose.yml

version: '2'

services:
db:
    image: eg_postgresql
    expose:
        - 5432
    environment:
        - POSTGRES_PASSWORD=docker
        - POSTGRES_USER=docker
        - POSTGRES_DB=postgres
web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
        - .:/test_application
    ports:
        - "8000:8000"
    links:
        - "db:db"
    environment:
        - DATABASE_URL=postgres://docker:docker@db:5432/postgres
        - DJANGO_SECRET_KEY=x7-g-xu^h5k%h8860!7ksn=@)7q9frn9_l6tmefvf)y=0)d!uh

输出:

conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Cannot assign requested address
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?

docker-compose ps

ubuntu@ip-172-31-7-117:~/dj1/helloworld$ sudo docker-compose ps
  Name                    Command               State           Ports         

----------------------------------------------------------------------------------
helloworld_db_1    /usr/lib/postgresql/9.3/bi ...   Up      5432/tcp              

helloworld_web_1   python3 manage.py runserve ...   Up      0.0.0.0:8000->8000/tcp

在app settings.py中

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'postgres',
    'USER': 'docker',
    'PASSWORD': 'docker',
    'HOST': 'db',
    'PORT': '5432',
  }
}

我试过很多方法来连接,但问题是一样的......

1 回答

  • 0

    尝试替换公开: - 5432用于带端口的数据库服务 - "5432:5432"

相关问题