postgresql - 为什么我在重建 docker 镜像时不会丢失 postgresql 数据?

标签 postgresql docker

version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

为什么我在运行 docker-compose build --force-em --no-cache 时不会丢失数据。如果这是正常的,为什么我们需要为数据文件夹创建卷?

最佳答案

当运行命令 docker-compose build --force-em --no-cache 时,这只会从你的 Dockerfile 构建 web Docker 镜像案例在同一目录中。

此命令不会停止您之前使用此组合文件启动的容器,因此您希望在运行此命令时丢失任何数据。

但是,一旦您使用 docker-compose down 删除容器或当容器停止 docker-compose rm 时,您将找不到 postgres 数据你重新启动容器。

如果你想持久化数据,并让容器在重新创建时拾取它,你需要给 postgres 数据卷一个这样的名称。

version: '3'

services:
  db:
    image: postgres
    volumes:
      - pgdata:/var/lib/postgresql/data
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

现在重新创建容器时,postgres 数据不会丢失。

关于postgresql - 为什么我在重建 docker 镜像时不会丢失 postgresql 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077901/

相关文章:

sql - 如何通过查询从一组中的多个表中进行选择?

postgresql - PostgreSQL 中的列排序在使用相同排序规则的 macOS 和 Ubuntu 之间是不同的

sql - ActionView::Template::Error (PG::UndefinedFunction: ERROR: operator does not exist: integer ~~ 未知

docker - 如何在 kubectl set 镜像上指定注册表凭据?

postgresql - NOT BETWEEN 在 codeigniter 中不起作用

python - 对 SQLAlchemy 中的 UniqueKeyViolation 使用react

docker - 从 docker 镜像中命中在本地主机上运行的服务

docker - Vert.x 高可用性不起作用

macos - 即使没有容器正在运行,也无法删除图像

具有 DHCP 分配地址的 Docker 容器