为什么我在重建docker image时不丢失postgresql数据?

问题描述 投票:1回答:1
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时不丢失数据。如果这是正常的,为什么我们需要为数据文件夹创建卷?

postgresql docker
1个回答
5
投票

运行命令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数据不会丢失。

© www.soinside.com 2019 - 2024. All rights reserved.