如何使用docker-compose和docker-machine为mongoDB挂载外部卷

我想将mongoDB数据保存在容器之外和指定的卷上。 我正在使用docker-compose,而yml文件看起来像

 web: build: . command: python -u app.py ports: - "5000:5000" volumes: - .:/todo links: - db db: image: mongo:3.0.2 

我想你尝试在像我这样的OSX系统上启动容器? 主机的卷目录不能在/ Users(或〜)下,因为joshuajabbour在这里指出。

尝试一下

  volumes: - /usr/local/mongodb:/todo 

正如该图片的docker hub页面( https://hub.docker.com/_/mongo/ )所logging的那样,您可以使用

 volumes: - './data:/data/db' 

哪个将使用主机path./data

 #Mongo Dockerfile FROM alpine:edge MAINTAINER "loko" <binario200@gmail.com> # 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撰写

 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 

build立和运行

 docker-compose build . docker-compose up