PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

docker postgres с първоначални данни не се запазва при комитации

Проблемът е, че postgres Dockerfile декларира "/var/lib/postgresql/data" като том. Това е просто нормална директория, която живее извън файловата система на Union, използвана от изображения. Томовете са активни, докато не се свързват контейнери към тях и не бъдат изтрити изрично.

Имате няколко възможности за избор:

  • Използвайте --volumes-from команда за споделяне на данни с нови контейнери. Това ще работи само ако има само едно работещо postgres изображение в даден момент, но това е най-доброто решение.
  • Напишете свой собствен Dockerfile, който създава данните, преди да декларирате обема. След това тези данни ще бъдат копирани в тома, когато контейнерът бъде създаден.
  • Напишете входна точка или cmd скрипт, който попълва базата данни по време на изпълнение.

Всички тези предложения изискват да използвате томове за управление на данните, след като контейнерът работи. Като алтернатива можете да напишете свой собствен Dockerfile и просто да не декларирате том. След това можете да използвате docker commit за да създадете ново изображение след добавяне на данни. Това вероятно ще работи в краткосрочен план, но определено не е начинът, по който трябва да работите с контейнери – не може да се повтори и в крайна сметка ще изчерпите слоевете във файловата система на Union.

Разгледайте официалните документи на Docker за управление на данни в контейнери за повече информация.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Водещи заплахи за сигурността на PostgreSQL

  2. Настройка и поддръжка на PostgreSQL репликация с помощта на Ansible

  3. Резултати от групови заявки по месец и година в postgresql

  4. SQL функцията е много бавна в сравнение със заявка без обвивка на функция

  5. Как да изчислим сумата от множество колони в PostgreSQL