我正在Windows 10机器上运行Docker。我正在尝试运行dockerized postgresql数据库,该数据库的数据可以安装在Windows 10计算机上。然后,我希望能够将此数据库数据推送到GitLab存储库中。之后,如果其他任何用户想要使用数据库的最新版本,他只需要提取更改,然后将数据安装在dockerized的postgresql上即可。
我为什么要这样做?
我们将在此数据库中进行很多更改。人们也在同时开发不同版本的程序。对于永久数据库,我将需要为每个功能分支管理不同版本的数据库,开发分支和主控/发布分支。那实在太多了。因此,理想情况下,只能在该特定功能分支中找到对特定功能分支的数据库所做的任何更改。不会有冲突。它还允许试验数据库,而不会破坏其他任何用户。
那么,怎么了?
适用于Windows的Docker具有局限性,请参阅:https://github.com/docker/for-win/issues/445
TL; DR:目前无法将卷从Windows装载到Linux容器。如链接中所述,有一些解决方法,但是没有从数据库中获取这些数据,主动推送/共享等的方法,只是将数据库持久化在本地系统上。
好吧,我几乎想出了所有办法:
是否使用了docker-compose命名卷,我也尝试使用
/c/this/is/my/windows/path:this/is/my/linux/path
代替
C:\this\is\my\windows\path:this/is/my/linux/path
但是它也没有帮助。
如前所述,我还使用了docker-compose文件中的命名卷:
version: '3'
services:
postgres:
image: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgress
- POSTGRES_DB=lol
ports:
- "5432:5432"
volumes:
- data:/var/lib/postgresql/data
volumes:
data: {}
但是猜猜是什么:它仍然失败了。
我知道我可以创建数据库转储并将其推送,但是这里的问题是:我不想一直手动进行。我宁愿选择一种平滑的解决方案,而不必每次都创建和加载转储。我只想启动一个docker-compose文件,该文件会装载数据库的数据,就是这样:非常简单,不错的解决方案。