使用持久性卷[docker compose]

时间:2018-11-16 16:40:22

标签: postgresql docker docker-compose

我的数据库容器有问题,因此我想将一个现有的数据库(从主机)挂载到生成的容器中(使用docker-compose)。我将向您展示yaml文件的重要部分:

postgres:
        image: postgres
        environment:
            POSTGRES_USER: user
            POSTGRES_PASSWORD: pass
        ports:
        - "5432:5432"
        volumes:
        - ./postgres/data:/var/lib/postgresql/data

因此,当我构建并打开docker-compose时,退出了postgres容器:

enter image description here

如果我删除了持久卷,它会起作用!我也用mysql,mongodb->同样的问题进行了测试。

你能照亮我吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

我已解决此事,我想分享。实际上,为使容器在“ docker-compose up”命令后打开,我们应添加tty和命令参数,例如:

postgres:
        image: postgres
        environment:
            POSTGRES_USER: user
            POSTGRES_PASSWORD: pass
        ports:
        - "5432:5432"
        volumes:
        - ./postgres/data:/var/lib/postgresql/data
        tty: true
        command: /bin/bash

我希望这样会有用。

答案 1 :(得分:0)

最简单的方法是命名卷,这些卷也可以在多个服务中重用,并且可以使用docker命令行轻松地对其进行检索和检查...

  1. 首先创建卷 docker volume create db-data
  2. 现在修改您的yml文件
    services
        postgres:
            image: postgres
            environment:
                POSTGRES_USER: user
                POSTGRES_PASSWORD: pass
            ports:
            - "5432:5432"
            volumes:
            - db-data:/var/lib/postgresql/data
    volumes:
       db-data:
  1. 您可以检查音量 docker volume inspect db-data

来源:Compose file reference