При использовании базового образа Dog для PostgreSQL вы выбираете версию PostgreSQL, запускаете контейнер и запускаете его. Большой! Но какой правильный / лучший способ перейти на более новую версию PostgreSQL в будущем?
3 ответа
На данный момент простого решения для этого не существует, но самое простое, что я нашел, это pg_dump
старой версии и затем загрузка этого дампа в более новую версию.
На https://github.com/docker-library/postgres/issues/37 обсуждается возможное решение этой проблемы, а также доказательство концепции обновления через докер на https://github. ком /tianon / докер-Postgres-обновление
Вам просто нужно указать тег, который соответствует версии PostgreSQL в изображении. Вы не должны обновлять PostgreSQL вручную, используя запущенный контейнер, потому что это противоречит цели использования базового образа.
В Dockerfile
, используя инструкцию FROM
:
FROM postgres:9.4
Из командной строки, используя команду run
:
$ sudo docker run [OPTIONS] postgres:9.4 [COMMAND] [ARG...]
После запуска PostgreSQL в контейнере в течение более года я склонен думать, что базы данных не так уж хороши для контейнерного хранения именно по этим причинам. Контейнеры не предназначены для использования в качестве виртуальных машин, поэтому каждый аспект инструментария будет бороться с вами, если вы попытаетесь рассматривать его как виртуальную машину, которой вы управляете. Контейнеры подобны прославленным корням - изоляция и воспроизводимые среды для конкретного приложения, и чем меньше конфигурация для этого приложения, тем лучше.
Все это говорит о том, что если вы настаиваете на том, что должны запускать PostgreSQL в контейнере, по крайней мере вы должны смонтировать том откуда-то, чтобы поместить файлы данных, чтобы вы могли безопасно уничтожить или изменить образ сервера базы данных (например, PostgreSQL). обновления). Любая конфигурация, которую необходимо выполнить, должна быть сделана в Dockerfile, чтобы обновления также обрабатывались путем редактирования Dockerfile - например, если вы выполняете незначительное обновление, вам может потребоваться всего лишь изменить тег изображения FROM
в вашем Dockerfile.