web-dev-qa-db-fra.com

Comment monter un volume externe pour mongoDB en utilisant docker-compose et docker-machine

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
14
casra

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

9
dnephin

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
9
Philiiiiiipp
#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

construire et courir

docker-compose build .
docker-compose up
0
Victor R Hdez