首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么带有Docker的Django服务器在postgresql中没有数据库运行?

为什么带有Docker的Django服务器在postgresql中没有数据库运行?
EN

Stack Overflow用户
提问于 2017-07-05 09:41:20
回答 1查看 540关注 0票数 1

我想知道为什么我的服务器在运行,为什么它看不到另一个数据库。psql\l

代码语言:javascript
复制
                                    List of databases
    Name     |    Owner    | Encoding |   Collate   |    Ctype    |   Access privileges   
-------------+-------------+----------+-------------+-------------+-----------------------
 aso         | postgres    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0   | postgres    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
             |             |          |             |             | postgres=CTc/postgres
 template1   | postgres    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
             |             |          |             |             | postgres=CTc/postgres
 owner       | owner       | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows)

我的Django设置:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

如您所见,没有名为postgres的数据库,但服务器运行正常(保存数据等)。另一方面,当我使用:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'aso',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

我明白了,django.db.utils.OperationalError: FATAL: database "aso" does not exist,有人能解释一下吗?

编辑了 @Adaikalaraj建议在docker中创建数据库。我试着用这个方法:

init.sql

代码语言:javascript
复制
CREATE USER postgres;
CREATE DATABASE aso;
GRANT ALL PRIVILEGES ON DATABASE aso TO postgres;

我更新的Dockerfile

代码语言:javascript
复制
FROM python:3.6.1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/
FROM library/postgres
ADD init.sql /docker-entrypoint-initdb.d/

不幸的是我得到了:

代码语言:javascript
复制
db_1   | LOG:  database system was shut down at 2017-07-05 14:02:41 UTC
web_1  | /usr/local/bin/docker-entrypoint.sh: line 145: exec: python3: not found
db_1   | LOG:  MultiXact member wraparound protections are now enabled
db_1   | LOG:  autovacuum launcher started
db_1   | LOG:  database system is ready to accept connections
dockerpri_web_1 exited with code 127
EN

回答 1

Stack Overflow用户

发布于 2017-07-05 12:18:37

在这里,'HOST': 'db'运行在docker中,似乎您正在检查系统中的psql。您可以在HOST : 127.0.0.1中给您的IP添加(例如: 127.0.0.1),也可以在端口内运行的postgres中创建db aso

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44922523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档