【问题标题】:docker-compose how to persist mongodb-databasedocker-compose 如何持久化 mongodb-database
【发布时间】:2021-12-03 17:25:09
【问题描述】:

我正在使用 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,我可以在生产中使用它吗?

【问题讨论】:

    标签: docker docker-compose docker-volume


    【解决方案1】:

    mongo 映像定义了以下卷:

    • /data/configdb
    • /data/db

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

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

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

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

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

    当您想重新开始时,删除您的本地 db 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-16
      • 2021-01-15
      • 1970-01-01
      • 2021-12-28
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多