Je souhaite conserver les données mongoDB
en dehors du conteneur et sur un volume spécifié. J'utilise docker-compose et le fichier yml ressemble à
web:
build: .
command: python -u app.py
ports:
- "5000:5000"
volumes:
- .:/todo
links:
- db
db:
image: mongo:3.0.2
Comme indiqué sur la page du docker hub pour cette image ( https://hub.docker.com/_/mongo/ ), vous pouvez utiliser
volumes:
- './data:/data/db'
Qui utilisera le chemin de l'hôte ./data
Je suppose que vous essayez de démarrer le conteneur sur un système OSX comme moi? Le répertoire de volume de la machine hôte ne peut pas se trouver sous/Utilisateurs (ou ~) comme le souligne joshuajabbour ici .
Essayez par exemple
volumes:
- /usr/local/mongodb:/todo
#Mongo Dockerfile
FROM Alpine:Edge
MAINTAINER "loko" <[email protected]>
# proxy settings
ARG http_proxy=http://your-corporate-proxy-if-is-need-it/
ARG https_proxy=http://your-corporate-proxy-if-is-need-it/
ARG no_proxy=localhost,127.0.0.0/8,::1,15.0.0.0/8,16.0.0.0/8
ADD run /
ADD dosu /sbin/
RUN chmod +x /sbin/dosu && \
echo http://dl-4.alpinelinux.org/Alpine/Edge/testing >> /etc/apk/repositories && \
apk add --no-cache mongodb
VOLUME /data/db
EXPOSE 27017 28017
ENTRYPOINT [ "/run" ]
CMD [ "mongod" ]
# Docker Compose
version: '2.0'
volumes:
data:
external:
name: "the-volume-name-you-want
services:
web:
build:
context: .
dockerfile: "Dockerfile"
args:
- HTTP_PROXY
- HTTPS_PROXY
- http_proxy
- https_proxy
- no_proxy
- NO_PROXY
image: "docker-hub-OR-your-built-image-name"
environment:
- http_proxy=$http_proxy
- https_proxy=$https_proxy
- no_proxy=$no_proxy
- HTTP_PROXY=$HTTP_PROXY
- HTTPS_PROXY=$HTTPS_PROXY
- NO_PROXY=$NO_PROXY
ports:
- "8080"
restart: always
depends_on:
- mongo
mongo:
image: "your-favorite-mongodb-image-name"
environment:
- http_proxy=$http_proxy
- https_proxy=$https_proxy
- no_proxy=$no_proxy
- HTTP_PROXY=$HTTP_PROXY
- HTTPS_PROXY=$HTTPS_PROXY
- NO_PROXY=$NO_PROXY
restart: always
volumes:
- data:/data/db
docker-compose build .
docker-compose up