如何与其他团队成员共享 docker 容器容量

how to share docker container volume with other team members

我有一个带有 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 中的 source-controlled。您可以进行数据库转储和源代码管理。

例如,您可以使用 pgdump,但也有其他工具可以做到这一点。

pg_dump --schema-only mydb > db.sql

然后您可以配置您的撰写文件以在启动时装载此转储文件。如果没有包含数据的卷,Postgres 将使用转储来设置数据库。

services:
  postgres-server:
    volumes:
      - ./db.sql:/docker-entrypoint-initdb.d/db.sql
      - postgres-server:/var/lib/postgres-server/data

但请注意,此转储文件中没有机密数据。这就是为什么在上面的示例中,我只转储了架构。因此,没有实际数据是受源控制的。数据本身也不适合 git。

您可以使用tar来备份卷内容。然后,您可以从那个 tar 存档中创建一个新容器。

如果你想这样做,看看 它 tars/untars 数据,但是您可能希望中间有一个步骤与您的团队成员分享 tar 球。