我有一个带有postgres的容器(用于开发目的(,在这个容器上,我对数据库进行了一些手动更改,我希望与其他团队成员共享
下面的yml文件被提交给git,我希望自己提交卷,这样所有其他团队成员都可以使用我手动添加的数据组成容器。因此,每个团队成员都将使用我预先创建的数据组成容器。
是否有一种干净的方式与其他团队成员共享音量我们都使用macOS
理想情况下,我想将卷提交给git并定义一个固定卷文件,但不确定如何做到这一点。
version: "3.7"
services:
postgres-server:
image: postgres:13
restart: always
env_file:
- .env.dev
environment:
PGDATA: /var/lib/postgresql/data
volumes:
- postgres-server:/var/lib/postgres-server/data
ports:
- "5432:5432"
pgadmin:
image: dpage/pgadmin4:6.5
restart: always
env_file:
- .env.dev
environment:
PGADMIN_LISTEN_PORT: 80
ports:
- "8080:80"
volumes:
- pgadmin:/var/lib/pgadmin
volumes:
postgres-server:
pgadmin:
这并不是卷的真正工作方式。它们并不意味着在git中受源代码控制。你可以做一个数据库转储和源代码管理。
例如,您可以使用pgdump,但也有其他工具可以做到这一点。
pg_dump --schema-only mydb > db.sql
然后,您可以将撰写文件配置为在启动时装载此转储文件。如果没有包含数据的卷,Postgres将使用转储来设置DB。
services:
postgres-server:
volumes:
- ./db.sql:/docker-entrypoint-initdb.d/db.sql
- postgres-server:/var/lib/postgres-server/data
但是请注意,此转储文件中没有机密数据。这就是为什么在上面的例子中,我只转储了模式。因此,没有任何实际数据是源代码控制的。数据本身也不适用于git。
您可以使用tar来备份卷内容。从这个tar档案中,您可以创建一个新的容器。
如果您想这样做,请查看https://stackoverflow.com/a/68230268/4222206它会标记/取消标记数据,但您可能希望在这中间有一步与您的团队成员共享焦油球。