简体   繁体   English

"Docker:如何使用 docker-compose 将数据从主机映射到容器(mongo)"

[英]Docker: How to volume map data from host to container (mongo) in using docker-compose

I am trying to volume map, data from host to container using docker-compose.我正在尝试使用 docker-compose 将数据从主机映射到容器。 I found this docker-compose.yml<\/strong> from prisma docs<\/a>我从prisma 文档<\/a>中找到了这个docker-compose.yml<\/strong>

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.34
    restart: always
    ports:
      - '4466:4466'
    environment:
      PRISMA_CONFIG: |
        port: 4466
        managementApiSecret: mysecret42
        databases:
          default:
            connector: mongo
            uri: mongodb://prisma:prisma@mongo
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: prisma
      MONGO_INITDB_ROOT_PASSWORD: prisma
    ports:
      - '27017:27017'
    volumes:
      - mongo:/var/lib/mongo
volumes: 
  mongo:

What you are describing is not the behavior of docker.您所描述的不是 docker 的行为。 There must be something in the prismagraph program that erases all the data every time it starts. Prismagraph 程序中必须有一些东西可以在每次启动时擦除所有数据。

docker compose down requires a -v flag in order to remove named volumes. docker compose down需要-v标志才能删除命名卷。

https://docs.docker.com/compose/reference/down/ https://docs.docker.com/compose/reference/down/

You can confirm this by doing:您可以通过执行以下操作来确认这一点:

docker volume ls

docker volume inspect mongo

Update : the location that mongo stores data is /var/lib/mongodb , not /var/lib/mongo更新:mongo 存储数据的位置是/var/lib/mongodb ,而不是/var/lib/mongo

Change your docker-compose file and it should work.更改您的 docker-compose 文件,它应该可以工作。

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: prisma
      MONGO_INITDB_ROOT_PASSWORD: prisma
    ports:
      - '27017:27017'
    volumes:
      - mongo:/var/lib/mongodb
volumes: 
  mongo:

The following worked:以下工作:

mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: prisma
      MONGO_INITDB_ROOT_PASSWORD: prisma
    ports:
      - '27017:27017'
    volumes:
      - mongo:/data/db
volumes: 
  mongo:

Worked for me.为我工作。

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: prisma
      MONGO_INITDB_ROOT_PASSWORD: prisma
    volumes:
      - ./mongo/data:/data/db
  volumes:
    mongo:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM