⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议
Skip to content

0.7.4 程序关了数据还在吗——数据卷

一句话破题

容器数据是临时的,关了就没了。数据卷 (Volumes) 为数据保留“家”,让服务重启后数据仍在。

卷类型

  • 命名卷:由 Docker 管理,跨容器共享,跨重启持久。
  • 绑定挂载:把宿主机目录挂到容器内,适合开发或与宿主机文件交互。

命名卷示例

powershell
docker volume create pgdata
docker run -d --name db -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:15-alpine

绑定挂载示例(Windows 路径)

powershell
docker run -d --name app -p 3000:3000 -v "D:\\data:/app/data" myapp:latest

Compose:多服务编排

docker-compose.yml

yaml
version: '3.9'
services:
  db:
    image: postgres:15-alpine
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=secret
    volumes:
      - pgdata:/var/lib/postgresql/data
  app:
    image: myapp:latest
    ports:
      - "3000:3000"
    environment:
      - DB_URL=postgres://postgres:secret@db:5432/postgres
    depends_on:
      - db
volumes:
  pgdata:

启动:docker compose up -d,查看:docker compose ps

可视化

觉知:持久化与可移植

  • 数据不要写进容器层;统一写入卷或绑定挂载。
  • 在 Windows 下绑定路径时使用绝对路径;生产环境优先命名卷。

AI 协作指南

  • 核心意图:让 AI 生成“带持久化的 Compose 文件”。
  • 需求定义公式:
    • “生成一个包含 appdb 的 Compose,db 使用命名卷持久化数据,app 通过容器名连接数据库。”