'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. I found this docker-compose.yml from prisma docs
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:
Problem Description:
docker-compose up -d,- add some data to mongodb
docker-compose down. the data gets removed.- Now, if I again
docker-compose up -d. I have to add data again to mongodb
How can I make data persistent (irrespective of container getting destroy)?
Solution 1:[1]
What you are describing is not the behavior of docker. There must be something in the prismagraph program that erases all the data every time it starts.
docker compose down requires a -v flag in order to remove named volumes.
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
Change your docker-compose file and it should work.
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:
Solution 2:[2]
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:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | chugadie |
| Solution 2 | Antonio Tabares |
