Я работаю над проектом 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 изменили settings.py для доступа к postgresql
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: (mount / 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"
В этом методе мне не нужно беспокоиться о пользователе или создании базы данных в контейнере по крайней мере в начале.
Option 2: (используйте именованный том, созданный docker compose)
dbpostgres:
image: postgres
volumes:
- datavolume:/var/lib/mysql
ports:
- "5432:5432"
volumes
datavolume
Теперь данные тома являются постоянными.Данные хранятся в контейнере.
Минусы:
Мои миграции потеряны.
Также мне нужно создать пользователя [myproject] и базу данных [myproject], а затем восстановить мою базу данных из резервной копии из моей разработки.Сервер с помощью Docker запускает dbpostgres.
Какой лучший способ хранения данных postgresql.