postgresql - 使用 docker-compose 时如何安全地停止/启动我的 postgres 服务器
问题描述
当我在我的应用程序中发布新功能时,我有时会经常停止/启动 docker。
docker-compose up -d
docker-compose stop
我使用的几乎是最基本的 postgres docker setup(见下文)。我正在将 /data 文件夹映射到我的主机。
如果我一天内多次停止/启动 docker 会导致数据损坏,有什么我应该担心的吗?
调用docker-compose stop
停止我的 postgres 实例的最佳方法是什么?
我的 docker-compose 中的 postgres 服务如下所示:
db:
image: postgres:9.4
volumes:
- "/home/deploy/data/pgdata:/var/lib/postgresql/data"
restart: always
此设置目前在开发中运行顺利,但一旦投入生产,我想确保我遵循最佳实践等。
解决方案
利用,
docker-compose down -v
它所做的基本上是删除您添加的所有卷。如果您不这样做,这些卷将挂起并占用您的空间。它只会删除 docker 容器内的卷。如果您希望该数据在容器移除后仍然存在,主机中的卷将保留并在容器移除后继续存在。
每当您通过创建 docker 容器时docker run
,Docker 都会创建一个 volume/ 目录来保存有关容器的详细信息。执行后docker run
,如果您查看/var/lib/docker/containers
,您将看到您启动的每个容器都有一个目录。如果您没有删除以前容器的卷,您将在“容器”目录下看到许多目录。这些目录的名称将是很长的随机字母和数字。因此,如果您在停止容器时不告诉 docker 删除这些目录,它将永远存在。我上面提到的v
选项将在您取下容器时删除这些目录。请记住,您/var/lib/docker
只能以 root 用户身份查看目录的内容。要更改为 root 用户,请使用sudo -i
在您尝试查看目录的内容之前。
推荐阅读
- sass - 如何使用不兼容的选择器?
- sharepoint - 获取 SharePoint 2019 中每周的网站访问者数量
- c# - 如何获取 Lambda 表达式的调用方法名称和执行方法
- javascript - 启动后如何修复 Expo CLI 中的错误?
- python - 按下按钮后停止功能tkinter
- python - Collectstatic 失败 - botocore.exceptions.ClientError:调用 HeadObject 操作时发生错误 (404):未找到
- javascript - 有没有办法在 React 中获取孩子的属性?
- java - 如何使 Java 桌面应用程序永远不会让系统休眠并在后台运行?
- javascript - 检查标头值是否匹配
- javascript - Firebase 网络存储列表 API 获取项目名称