我正在研究Django项目。
我将arhclinux主机用作运行postgresql的开发服务器。
我已经在postgresql中创建了一个数据库。
sudo su - postgres (get into the shell session for the postgres user)
[postgres]$ psql (Log into a Postgres session by typing:)
psql (10.3)
Type "help" for help.
postgres=#
postgres=# CREATE DATABASE myproject;
postgres=# CREATE USER myprojectuser WITH PASSWORD 'password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
在我的django应用中,更改了用于访问postgresql的settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}
然后在Django中进行迁移并创建超级用户:
# do migrations
cd ~/myproject
python manage.py makemigrations
python manage.py migrate
# create super user
python manage.py createsuperuser
现在我要使用docker进行生产:
什么是管理我的Postgresql数据库的最佳方法:
选项1 :(将/ var / lib / postgresql装入postgres容器中)
假设我正在使用aws ubuntu主机服务器,然后在其中安装了postgresql,创建了用户[myproject]和数据库[myproject],然后从开发服务器的备份转储中还原了数据库
psql dbname <转储文件
现在在dockercompose.yml
中 dbpostgres:
image: postgres
volumes:
- /var/lib/postgresql:/var/lib/postgresql
ports:
- "5432:5432"
在这种方法中,我不必担心用户或至少在一开始就在容器中创建数据库。
选项2 :(使用由docker compose创建的命名卷)
dbpostgres:
image: postgres
volumes:
- datavolume:/var/lib/mysql
ports:
- "5432:5432"
volumes
datavolume
现在,卷数据是持久的。数据存储在容器中。
缺点:
我的迁移丢失了。
我还必须创建用户[myproject]和数据库[myproject],然后使用docker run dbpostgres从开发服务器的备份转储中还原数据库。
哪种是存储postgresql数据的最佳方法。