情况:我正在做一个大型的启动网络项目,该项目经常投入生产,所以所有的开发都非常快。我们有几个环境——开发(本地)、QA、阶段和生产,当然数据库中有不同的数据(我们使用 postgres)。我的日常工作是,在我开发一些新功能时,一些 QA 人员可以在其中一个环境中发现一个严重的错误,所以我必须修复它,或者至少看看哪里出了问题。
问题:为了从本地上下文切换到生产/qa/stage,我通常在本地从这些环境中转储数据库,然后进行调试。问题是,起初,转储非常繁重,有时需要长达 30 分钟才能下载和应用它,其次 - 当我将其转储到本地数据库时,我失去了本地开发环境。
希望:能够在本地快速切换上下文
示例:假设我们有用于 Web 服务器的 docker 容器,它链接到 postgres 容器,就像在这个示例docker-compose.yml
文件中一样
version: '3'
services:
pg:
image: "mdillon/postgis"
hostname: pghost
ports:
- "5433:5432"
volumes:
- "~/pgdata:/var/lib/postgresql/data"
...
webserver:
image: "some_app_image"
links:
- pg:postgres
...
让我们假设这个 Web 服务器真的很重,因此有多个运行的容器在内存使用和可读性方面将是一个大问题。
问题:是否有任何优雅(或不)的方法可以在不同的数据库数据集之间进行快速切换?可能有不同的 pgdata 文件夹,或者以某种方式链接多个 postgres 容器(尽管我不确定是否可能)