docker-编写如何持久化mongodb-数据库

docker-compose how to persist mongodb-database

我正在使用 docker-compose,这是我的 docker-compose.yaml 文件:

version: "3.7"
services:
  node:
    container_name: my-app
    image: my-app
    build:
      context: ./my-app-directoty
      dockerfile: Dockerfile
    command: npm run dev
    environment:
      MONGO_URL: my-database
      port: 3000
    volumes:
      - ./my-app-directory/src:/app/src
      - ./my-app-directory/node_modules:/app/node_modules
    ports:
      - "3000:3000"
    networks:
      - my-app-network
    depends_on:
      - my-database

  my-database:
    container_name: my-database
    image: mongo
    ports:
      - "27017:27017"
    networks:
      - my-app-network

networks:
  my-app-network:
    driver: bridge

我希望每次 运行 以下命令时都能找到一个清晰的新创建的数据库:

docker-compose build
docker-compose up

但事实并非如此。当我使用 docker-compose up 启动容器时,我的数据库具有上次使用 docker-compose down 命令关闭它时的确切状态。而且由于我没有在 my-database 对象中指定 volume 道具,这是正常行为吗?这是否意味着不需要其他操作来持久化数据库状态?如果我选择使用 docker-compose,我可以在生产中使用它吗?

mongo 图像定义了以下卷:

  • /data/configdb
  • /data/db

因此 docker-volume 将为 data/db 创建并使用一个未命名的卷。

如果你想要一个新的,使用:

docker-compose down -v
docker-compose up -d --build

或者使用安装在卷位置的安装点,如:

volumes:
  - ./db:/data/db:rw

并在您想重新开始时删除本地 db 目录。