programing

도커 합성 및 도커 기계를 사용하여 mongoDB용 외부 볼륨을 탑재하는 방법

goodsources 2023. 7. 5. 20:40
반응형

도커 합성 및 도커 기계를 사용하여 mongoDB용 외부 볼륨을 탑재하는 방법

나는 지속하고 싶습니다.mongoDB컨테이너 외부 및 지정된 볼륨의 데이터.나는 도커 컴포지를 사용하고 있고 yml 파일은 다음과 같습니다.

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

해당 이미지의 도커 허브 페이지에 문서화된 대로(https://hub.docker.com/_/mongo/) 를 사용할 수 있습니다.

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

호스트 경로를 사용합니다../data

당신도 저처럼 컨테이너를 OSX 시스템에서 시작하려고 하는 것 같은데요?여기서 Joshuajabor가 가리키는 호스트 시스템 볼륨 디렉토리는 /Users(또는 ~) 아래에 있을 수 없습니다.

예를 들어 보겠습니다.

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

파일 사용

web:
  build: .
  command: python -u app.py
  ports:
    - "5000:5000"
  volumes:
    - .:/todo # HERE --> /mnt/c/temp/mongo:/data/db (mnt= root | c = your drive | temp and mongo = folder
  links:
- db
db:
  image: mongo:3.0.2
  • 그런 다음 값은 /mnt/c/temp/mongo:/data/db가 될 수 있습니다.

환경 변수를 사용하는 것을 잊지 마십시오.

environment:
  MONGO_INITDB_ROOT_USERNAME: root
  MONGO_INITDB_ROOT_PASSWORD: fw324fe

저도 같은 문제가 있었습니다. Windows 10과 함께 도커를 사용하고 있고 WSL 2를 사용하여 Ubuntu와 통합하고 있습니다. 전체 경로를 입력해야만 문제를 해결할 수 있었습니다.

 volumes:
          - /home/you_user/mongoDocker/docker:/data/db

문서는 저에게 도움이 되었습니다: https://docs.docker.com/compose/compose-file/ #http://#

여러 서비스에서 볼륨을 재사용하려면 명명된 볼륨을 최상위 레벨로 선언해야 합니다.volumes열쇠.

이 예에서는 백엔드 서비스에서 사용 중인 명명된 볼륨(db-data)과 단일 서비스에 대해 정의된 바인딩 마운트를 보여 줍니다.

services:
  backend:
    image: awesome/backend
    volumes:
      - type: volume #this is to declare that the type is volume
        source: db-data #this is the name of your already existing volume
        target: /data #this is the target or destination of the data being saved by your volume 
        volume:
          nocopy: true #The nocopy modifier is for when you are creating a volume and data already exists in the container's path, you can specify if you want that data copied when the volume is created.

volumes:
  db-data:
    external: true # the external flag allows you to use volumes created outside the scope of the docker-compose file
#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" ]

도커 작성

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

언급URL : https://stackoverflow.com/questions/34390220/how-to-mount-external-volume-for-mongodb-using-docker-compose-and-docker-machine

반응형