首页 > 解决方案 > 在 MongoDB docker-compose.yml 中保存数据的正确方法

问题描述

我一直在阅读一些博客文章和答案,以找到一种将数据保存在 MongoDB 容器中的方法,即使在删除和重建之后也是如此。

以下是我的做法,但我担心即使这样做也会丢失所有数据,所以我无法实际测试它。这是正确的方法吗?即使我一次又一次地做类似的事情,这会保留我的数据docker system prunedocker-compose build

# Docker Compose
version: '3.7'

services:
  frontend:
    container_name: frontend
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - "80:80"
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    links:
      - db
  db:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - data-volume:/data/db <------- added this part

提前致谢。

标签: mongodbdockerdocker-composedocker-volume

解决方案


您所做的将在容器重新启动和修剪之间保留数据。仅当您明确删除所有卷或修剪卷时,才会删除该卷。

version: '3.7'

services:
  frontend:
    container_name: frontend
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - "80:80"
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    links:
      - db
  db:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - data-volume:/data/db

volumes:
    data-volume:
      name: db-data

确保明确给出卷名,否则您会发现自己在实验期间创建了多个匿名卷。


推荐阅读