我有一个名为“postgres”的容器,使用plain docker命令构建,其中包含一个已配置的PostgreSQL。另外,我有一个docker-compose设置,有两个服务 - “api”和“nginx”。
如何将“postgres”容器添加到我现有的docker-compose设置作为服务,而无需重建? PostgreSQL数据库是手动配置的,并且填充了数据,因此重建是一个非常非常糟糕的选择。
我浏览了docker-compose文档,但遗憾的是没有重新构建就没办法做到这一点。
答案 0 :(得分:0)
不幸的是,这是不可能的。
你没有在docker-compose上引用容器,你使用图像。
您需要创建一个卷和/或绑定它以保存您的数据库数据。
这是因为容器不保存数据,如果你用数据填充它并且没有为它创建绑定装置或卷,你将失去使用docker container stop
的一切。
建议:
docker cp
Docker cp会将内容从容器复制到主机。 https://docs.docker.com/engine/reference/commandline/container_cp/
这将保留您的所有数据,您将能够将其装入或绑定,以便在docker-compose上使用。
docker-compose volume的参考:https://docs.docker.com/compose/compose-file/#volumes
postgres docker image的参考:https://hub.docker.com/_/postgres/
卷和绑定坐骑的引用:https://docs.docker.com/storage/bind-mounts/#choosing-the--v-or---mount-flag
答案 1 :(得分:0)
您可以使用docker container commit将此容器保存在新图像中,并在docker-compose中使用新创建的图像
docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
但我更喜欢使用Dockerfiles和脚本来创建图像以填充我的数据等。