Postgresql 如何将已构建的docker容器添加到docker compose?

Postgresql 如何将已构建的docker容器添加到docker compose?,postgresql,docker,docker-compose,docker-image,Postgresql,Docker,Docker Compose,Docker Image,我有一个名为“postgres”的容器,它是用普通的docker命令构建的,里面有一个配置好的PostgreSQL。此外,我还有一个docker compose设置,其中包含两个服务——“api”和“nginx” 如何将“postgres”容器作为服务添加到现有docker compose设置中,而无需重新构建?PostgreSQL数据库是手动配置的,并且充满了数据,因此重建是一个非常非常糟糕的选择 我查阅了docker compose文档,但遗憾的是,如果不重新构建,就无法做到这一点。不幸的是

我有一个名为“postgres”的容器,它是用普通的docker命令构建的,里面有一个配置好的PostgreSQL。此外,我还有一个docker compose设置,其中包含两个服务——“api”和“nginx”

如何将“postgres”容器作为服务添加到现有docker compose设置中,而无需重新构建?PostgreSQL数据库是手动配置的,并且充满了数据,因此重建是一个非常非常糟糕的选择


我查阅了docker compose文档,但遗憾的是,如果不重新构建,就无法做到这一点。

不幸的是,这是不可能的

您不引用docker compose上的容器,而是使用图像

您需要创建一个卷和/或绑定装载它以保留数据库数据

这是因为容器不保存数据,如果您已经用数据填充了容器,并且没有对其进行绑定装载或卷,那么使用
docker container stop
将丢失所有内容

建议:

docker cp
Docker cp将内容从容器复制到主机

  • 创建一个文件夹以保存所有PostgreSQL数据(例如:/home/user/postgre\u data/)
  • 将PostgreSQL容器数据的内容保存到此文件夹(docker hub postgres页面供进一步参考:
  • 运行一个新的PostgreSQL(相同版本)容器,并将装载点绑定到新文件夹
  • 这将维护您的所有数据,您将能够对其进行卷装或绑定装载,以便在docker compose上使用

    docker撰写卷的引用:

    postgres docker图像参考:

    卷和绑定装载的参考:


    您可以使用将此容器保存在新图像中,并在docker compose中使用新创建的图像

    docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
    然而,我更喜欢使用DockerFile和脚本来创建图像,以填充我的数据等