代码之家  ›  专栏  ›  技术社区  ›  Denis Stephanov

Docker容器持久数据库

  •  1
  • Denis Stephanov  · 技术社区  · 7 年前

    我正在我的项目中使用Postgres Docker图像。对于初始化,我使用以下命令创建和初始化数据库(表、视图、数据…)

    COPY sql_dump.sql /docker-entrypoint-initdb.d/

    是否可以在容器停止和删除后保留这些数据?例如,当我运行postgres映像时,它将使用这些数据创建数据库,而不需要每次容器启动时都加载脚本。只需加载第一次运行时创建的数据。

    我做了一些研究,发现了volume命令,但我不知道如何将其用于我的目的,我是docker的新成员。谢谢你的帮助。我正在使用Docker进行Win V18。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ed Mendez    7 年前

    您可以使用Docker命名的卷。可以找到更多信息 here .

    这将创建一个名为postgres data的命名卷

    docker volume create postgres-data 
    

    假设这是创建容器的命令。

    docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
    

    把那个换成这个。

    docker run --name some-postgres  -v postgres-data:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword -d postgres
    

    这应该在/var/lib/postgresql下安装postgres数据卷。它们可以初始化数据库吗?当您停止并启动容器时,它将包含持久化的数据。

    -HTH