Я хочу перенести свой проект в vagrant vm, частью этого является перенос данных базы данных в vagrant, я использую контейнер postgres для хранения данных, поэтому я смонтировал каталог в /var/lib.postgresql/
, а сценарий резервного копирования SQL в /docker-entrypoint-initdb.d/
для автоматической загрузки резервных данных и их сохранности.
docker run --name test1 -v /postgresShellTest/:/docker-entrypoint-initdb.d/ -v /postData/:/var/lib/postgresql/ postgres:11.4
Однако это приводит к тому, что добавленные данные удаляются резервным SQL при каждом создании контейнера после его удаления. Хотя возможно not mount the backup SQL later
, это не очень удобно. Поэтому мне интересно, могу ли я добавить мнение о том, что при наличии таблицы проекта резервный SQL не будет запущен, иначе база данных будет инициализирована.
Я монтирую shell.sh в /docker-entrypoint-initdb.d/
, содержимое выглядит следующим образом:
BAK=/var/lib/postgresql/data/
if [ "`ls -A ${BAK}`" = "" ];
then
echo "${BAK} is empty"
psql -h localhost -p 5432 -U postgres -d postgres < edgeai.sql
else
echo "${BAK} is not empty"
fi
. Впервые смонтирована пустая папка для /var/lib/postgresql/data/
, но этот отчет psql: could not connect to server: No such file or directory ....socket "/tmp/.s.PGSQL.5432"?
Поэтому я хочу psql таблицу поиска
psql -U postgres -d postgres -c 'SELECT * FROM mytable'
но сообщается об ошибке psql: FATAL: database "SELECT * FROM my_table" does not exist
Я не знал, как еще достичь своих целей
Я был бы очень признателен, если бы вы, ребята, могли сказать мне, как достичьон