为什么重建Docker映像时我不会丢失postgresql数据?

use*_*105 2 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
Run Code Online (Sandbox Code Playgroud)

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

yam*_*enk 6

运行命令时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
Run Code Online (Sandbox Code Playgroud)

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

  • TY。我不知道容器能够存储持久数据,我以为它只是一个图像的运行过程 (2认同)