在docker创建的postgresql+postgis容器里对现有的postgis扩展插件更新成新的版本,不新建容器的话,如何在现有容器中实现
时间: 2024-10-10 09:03:36 浏览: 43
在Docker中,如果你已经有一个运行的PostgreSQL + PostGIS容器,并且想更新PostGIS到新版本而不重启容器,你可以按照以下步骤操作:
1. **备份数据**:首先,为了防止数据丢失,你需要将数据库的数据备份到主机或其他持久化存储。
```bash
docker exec -it <container_name> pg_dumpall > backup.sql
```
2. **停止服务**:停止正在运行的容器,以允许你修改配置文件和安装新版本。
```bash
docker stop <container_name>
```
3. **进入容器**:使用`docker exec`命令进入容器内部。
```bash
docker exec -it <container_name> bash
```
4. **更新PostGIS**:切换到PostgreSQL数据目录,然后下载并替换PostGIS库。
```bash
cd /var/lib/postgresql/data/pgxs/
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-updates-postgresql96-mods-pgsql-<new_version>.tar.gz
tar xvf pgdg-redhat96-updates-postgresql96-mods-pgsql-*.tar.gz
rm *.tar.gz
```
替换 `<new_version>` 为你要升级到的新版本号。
5. **重启PostGIS**:更新完毕后,重启PostGIS服务,使其加载新版本。
```bash
sudo service postgresql restart
```
6. **验证更新**:如果一切顺利,可以登录数据库检查PostGIS版本是否更新。
7. **恢复数据**:最后,如果需要,将备份的SQL文件导入到新版本的数据库中。
```bash
docker cp backup.sql <container_name>:/var/lib/postgresql/data/
docker exec -it <container_name> psql -U your_username -d your_dbname < backup.sql
```
阅读全文