繁体   English   中英

docker compose 无法将 postgresql 数据库与 django 连接

[英]docker compose cannot connect postgresql database with django

我的 Django 应用程序无法连接到 postgresql。 我将 Dockerfile 用于 django,并使用 docker-compose 和 postgres 官方映像进行构建。

docker-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

在应用设置.py

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

我尝试了多种连接方式,但问题是相同的...

尝试用端口替换暴露:- 5432为您的数据库服务提供端口-“5432:5432”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM