2015-12-21 12 views
9

Chciałbym przechowywać dane mongoDB poza kontenerem i na określonym woluminie. Używam Döcker-komponować i plik yml wyglądaJak zamontować zewnętrzną objętość dla mongoDB za pomocą dokowania-do-kreślenia i maszyny-do-dokowania

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

jaka wersja? Wygląda na to, że może być 2. Szukam informacji na temat wersji 3. – Dagrooms

+0

@Dagrooms: czy udało się ją znaleźć? Próbowałem, ale dane nie są przechowywane na hoście –

Odpowiedz

6

co zostało udokumentowane na stronie piasty doker dla tego obrazu (https://hub.docker.com/_/mongo/) można użyć

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

który wykorzysta ścieżkę hosta ./data

+0

Mam tę '' 'web: kompilację:. polecenie: python -u app.py porty: - "5000: 5000" tomy: -.:/Todo linki: - db db: image: Mongo: 3.0.2 tomy: - ./data:/data/db''', ale kontener mongo nie uruchamia się i wygląda na to, że narzeka, że ​​nie ma uprawnień do zapisu w folderze ./data. jest napisane: ** 2015-12-27T06: 55: 19.002 + 0000 I STORAGE [initandlisten] wyjątek w initAndListen: 98 Nie można utworzyć/otworzyć pliku blokady: /data/db/mongod.lock errno: 13 Odmowa uprawnień Jest mongodą wystąpienie już działa ?, kończenie ** nie jestem pewien jaki jest problem – casra

+0

Problemem są uprawnienia do plików. Mongo prawdopodobnie działa jako użytkownik mongo, który nie ma takich samych uprawnień jak twój użytkownik. – dnephin

+0

ale ** /data/db/mongod.lock** znajduje się wewnątrz kontenera, a nie na moim komputerze-hoście. Czy to ** woluminy: - ./data:/data/db* oznacza, że ​​**/data/db ** kontenera będzie takie samo jak ** ./data ** hosta? – casra

7

Przypuszczam, że próbujesz uruchomić kontener w systemie OSX, tak jak ja? Katalog woluminu maszyny hosta nie może być w katalogu/Users (lub ~), ponieważ joshuajabbour wskazuje na here.

Spróbuj na przykład

volumes: 
    - /usr/local/mongodb:/todo 
0
#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 

zbudować i uruchomić

docker-compose build . 
docker-compose up 
Powiązane problemy