2015-12-21 23 views
9

mongoDB verilerini kapsayıcının dışında ve belirtilen birimde tutmak istiyorum. Ben liman işçisi-oluşturma deneyimini kullanıyorum ve yml dosya bu görüntüde (https://hub.docker.com/_/mongo/) için liman işçisi göbek sayfasında belgelendiği gibiDocker-oluştur ve docker-makineyi kullanarak mongoDB için dış birim nasıl takılır?

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

Ne sürümünü çalıştırın? Görünüşe göre 2 görünüyor. Sürüm 3'te bilgi arıyorum. – Dagrooms

+0

@Dagrooms: Bunu buldunuz mu? Ben denedim ama veri –

cevap

6

gibi konak yolunu kullanacak

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

kullanabilirsiniz görünüyor ./data

+0

ana bilgisayar üzerinde ısrar etmiyorum bu '' 'web: yapı:. komut: piton -u portları app.py: - "5000: 5000" hacimleri: -:./Todo bağlantılar: - db db: resim: Mongo: 3.0.2 hacimleri: - ./data:/data/db''', ancak mongo konteynırı başlamıyor ve ./data klasöründe yazma iznine sahip olmadığından şikayet ediyor gibi görünüyor. diyor ki: ** 2015-12-27T06: 55: 19.002 + 0000 I STORAGE [initandlisten] istisnası initAndListen: 98 Oluşturulamıyor/açık kilit dosyası: /data/db/mongod.lock errno: 13 İzin reddedildi Bir mongod mı örneği zaten çalışıyor ?, sonlandırma ** sorunun ne olduğundan emin değilim – casra

+0

Sorun, dosya izinleri. Mongo, muhtemelen, kullanıcıyla aynı izinlere sahip olmayan mongo kullanıcısı olarak çalışır. – dnephin

+0

ama ** /data/db/mongod.lock**, ana makinemde değil, kapsayıcının içinde. Bu ** birimleri değil: - ./data:/data/db*, kapsayıcının **/data/db ** ana bilgisayarının **/data ** ile aynı olacağı anlamına mı geliyor? – casra

7

Kapsayıcıyı benim gibi bir OSX sistemde başlatmayı denediniz mi? Ana makine makine birim dizini/Kullanıcılar (veya ~), joshuajabbour'un here'u işaret ettiği gibi olamaz.

örnek

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 Oluştur

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 

inşa için deneyin ve

docker-compose build . 
docker-compose up