当前位置: 首页 > 知识库问答 >
问题:

如何将现有的postgres数据文件夹复制和使用到docker postgres容器中

赵渊
2023-03-14

我想构建postgres docker容器来测试一些问题。我有:

>

  • postgres文件的存档文件夹(/var/lib/postgres/data/)

    将文件夹放入Docker Postgres的Dockerfile:最新。

    我不想使用卷,因为我不需要在重启期间存储新数据(这就是为什么这个帖子不同于如何使用PostgreSQL容器来处理现有数据?在这个帖子中使用卷)

    我的建议是在构建阶段将postgres文件(/var/lib/postgres/data/)从主机复制到Docker的/var/lib/postgres/data/中。

    但是postgres docker会在initdb阶段执行时替换这些文件。

    例如Dockerfile

    FROM postgres:latest
    
    
    COPY ./postgres-data.tar.gz /opt/pg-data/
    WORKDIR /opt/pg-data
    RUN tar -xzf postgres-data.tar.gz
    RUN mv ./data/ /var/lib/postgresql/data/pg-data/
    

    运行命令

    docker run -p 5432:5432 -e PGDATA=/var/lib/postgresql/data/pg-data --name database-immage1 database-docker
    
  • 共有1个答案

    阴阳
    2023-03-14

    如果不需要使用数据库快照创建自定义图像,可以使用卷。在主机上的某个位置取消数据库文件,比如~/pgdata,然后运行映像。示例:

    docker run -v ~/pgdata:/var/lib/postgresql/data/ -p 5432:5432 postgres:9.5
    

    文件必须与映像的Postgres版本兼容,因此使用与存档数据库相同的映像版本。

    相反,如果必须重新创建映像,则不需要解压缩数据库归档。add指令将为您完成此操作。确保tar不包含任何前导目录。

    FROM postgres:latest
    ADD ./postgres-data.tar.gz /var/lib/postgresql/data/
    
    docker build . -t database-docker
    
    docker run -p 5432:5432 --name  database-image1 database-docker
    
     类似资料:
    • 我有一个场景,比如我必须将几个配置文件复制到存在于docker容器中的tomcat webapps文件夹中。这是我使用的dockerfile 一旦我们运行docker,它实际上会执行以下操作 它实际上将app.war复制到tomcat webapps文件夹,并提取到名为“app”的文件夹 Docker将尝试启动tomcat服务器。 我想将配置文件复制到提取的war文件中,该文件位于tomcat w

    • Python版本:2.7.13 操作系统:Windows 因此,我正在编写一个脚本,根据文件名中包含文件夹名的要求,将各种名称的文件复制到特定文件夹中。(我对这一点相当陌生,只是想在工作中创建更高效的脚本——我查看了大量StackOverflow页面和web上的一些地方,但找不到与此特定任务相关的Python) 我已经将文件夹转换为一个字符串列表,我可以搜索文件名,但是当我将它们复制到上面时,它们

    • 我有一个,其中我将现有目录(包含内容)复制到工作正常的容器: Dockerfile 但当我使用文件中只有目录,而在中没有任何内容。 docker-compose.yml: 也许我不明白的功能,如果是这种情况,请告诉我如何通过文件将现有文件复制到容器。

    • 问题内容: 我在将包含该文件夹中文件的文件夹复制到另一个文件夹时遇到一些问题。Command 不会复制文件夹中的文件。 问题答案: 您正在寻找的选项是。 如果不存在,将创建它。 意味着。您也可以使用,因为它不区分大小写。 请注意根据@ muni764的注释添加尾随的细微差别。

    • 问题内容: 这个问题已经在这里有了答案 : 使用Java将文件从一个目录复制到另一个目录 (33个答案) 4年前关闭。 如何将一个文件夹及其所有子文件夹和文件复制到另一个文件夹中? 问题答案: Apache Commons IO可以为您解决问题。看看FileUtils。

    • 我只需要将构建文件夹中的文件(和子文件夹)复制到..html中。 是我遗漏了什么还是我必须一个一个地复制每个文件?