为什么使用Docker的Django服务器在postgresql中没有数据库运行?
我想知道为什么我的服务器正在运行,为什么没有看到另一个数据库。 用psql
和\l
:
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设置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, } }
正如你所看到的,没有数据库名为postgres
但服务器运行正常(保存数据等)。 另一方面,当我使用:
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
任何人都可以解释我呢?
EDITED @Adaikalarajbuild议在Docker中创build数据库。 我正在尝试这种方式:
init.sql
:
CREATE USER postgres; CREATE DATABASE aso; GRANT ALL PRIVILEGES ON DATABASE aso TO postgres;
我更新的Dockerfile
:
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/
不幸的是我得到:
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
这里'HOST': 'db'
在docker中运行,似乎你正在检查你的系统中的psql
。 你可以在HOST : 127.0.0.1
给你的IP地址(例如:127.0.0.1),或者你可以在aso
中运行的postgres中创builddb aso
。