【问题标题】:Docker with PostgresqlDocker 与 Postgresql
【发布时间】:2018-04-13 22:59:53
【问题描述】:

我用 Postgresql 创建了一个 Dockerfile,代码如下:

FROM postgres:9.4
MAINTAINER Fabio Ebner
ENV POSTGRES_PASSWORD="dna44100"
ENV POSTGRES_PORT=5432
EXPOSE ${POSTGRES_PORT}
COPY init.sql /docker-entrypoint-initdb.d/

那么如何指定始终将我的数据库数据保存在我的用户机器中?因为每次我停止容器时使用此代码,我的数据都会丢失

【问题讨论】:

    标签: postgresql docker


    【解决方案1】:

    您需要安装一个卷。将您的主机指向容器的目录 /var/lib/postgresql

    来源:docker mounting volumes on host

    【讨论】:

      【解决方案2】:

      你需要挂载一个卷到PostgreSQL的data目录。

      您可以使用以下内容,使用docker-compose file

      version: "3"
      
      services:
        test-postgresql:
          image: postgres:9.4
          container_name: test-postgresql
          ports:
            - "5432:5432"
          environment:
            POSTGRES_PASSWORD: dna44100
          volumes:
            - ./init.sql:/docker-entrypoint-initdb.d/init.sql
            - ./folder-on-host:/var/lib/postgresql/data
      

      使用 docker-compose 文件,您可以使用 docker-compose up 启动容器并使用 docker-compose down 停止容器。数据库和设置保存在指定目录 (./folder-on-host)。

      如果要删除卷可以使用命令:docker-compose down -v


      您也可以使用docker run 挂载卷,使用-v or -volume option

      docker run -v ./folder-on-host:/var/lib/postgresql/data yourimagename
      

      【讨论】:

      • 而在一个单一的我该怎么办? Dockefile 我创建了一个 VOLUME ["/Users/user/Projetos/docker/data"] 。所以当我运行 docker run myContainer 他会创建这个目录吗?如何将此目录与容器内的 postgres 目录链接?
      猜你喜欢
      • 2017-04-18
      • 2021-05-31
      • 2020-01-21
      • 2020-06-27
      • 2020-07-28
      • 2023-02-12
      • 2014-12-05
      • 2020-07-16
      • 2023-02-26
      相关资源
      最近更新 更多