第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用docker-compose播種mongo數(shù)據(jù)庫(kù)?

如何使用docker-compose播種mongo數(shù)據(jù)庫(kù)?

慕森王 2019-12-13 09:59:39
我正在嘗試分發(fā)在幾個(gè)鏈接的容器中運(yùn)行的一組連接的應(yīng)用程序,這些容器包括一個(gè)mongo數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)需要:分發(fā)包含一些種子數(shù)據(jù);允許用戶(hù)添加其他數(shù)據(jù)。理想情況下,數(shù)據(jù)還將保存在鏈接的數(shù)據(jù)卷容器中。我可以mongo使用mongo不裝載任何卷的基本實(shí)例(dockerhub映像:psychemedia/mongo_nomount-本質(zhì)上是不帶該VOLUME /data/db語(yǔ)句的基本mongo Dockerfile )和Dockerfile配置的方式將數(shù)據(jù)放入容器中:ADD . /filesWORKDIR /filesRUN mkdir -p /data/db && mongod --fork --logpath=/tmp/mongodb.log && sleep 20 && \mongoimport  --db testdb --collection testcoll  --type csv --headerline --file ./testdata.csv  #&& mongod --shutdown其中與Dockerfile ./testdata.csv位于同一目錄(./mongo-with-data)中。我的docker-compose配置文件包括以下內(nèi)容:mongo:  #image: mongo  build: ./mongo-with-data  ports:    - "27017:27017"  #Ideally we should be able to mount this against a host directory  #volumes:  #  - ./db/mongo/:/data/db  #volumes_from:  #  - devmongodata#devmongodata:#    command: echo created#    image: busybox#    volumes: #       - /data/db每當(dāng)我嘗試裝入VOLUME時(shí),似乎就好像/data/db刪除了原始種子數(shù)據(jù)(存儲(chǔ)在其中)一樣。我猜想,在將卷安裝到/data/db該卷時(shí),它將替換當(dāng)前存在的任何卷。也就是說(shuō),docker用戶(hù)指南建議:創(chuàng)建容器時(shí)將初始化卷。如果容器的基本映像在指定的安裝點(diǎn)包含數(shù)據(jù),則在卷初始化時(shí)將現(xiàn)有數(shù)據(jù)復(fù)制到新卷中?因此,如果我將VOLUME命令放在種子RUN命令之后,我希望數(shù)據(jù)能夠持久保存嗎?那我在做什么錯(cuò)?從長(zhǎng)遠(yuǎn)來(lái)看,我想自動(dòng)化幾個(gè)鏈接容器的構(gòu)建,然后分發(fā)一個(gè)Vagrantfile/ docker-compose的YAML文件,該文件將啟動(dòng)一組鏈接應(yīng)用程序,其中包括一個(gè)預(yù)先mongo填充的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)帶有(部分預(yù)先填充的)持久數(shù)據(jù)容器。
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

我使用另一個(gè)docker容器執(zhí)行此操作,該容器的唯一目的是播種mongo,然后退出。我懷疑這與ebaxt的想法相同,但是當(dāng)我尋找答案時(shí),我只是想看看一個(gè)簡(jiǎn)單而又簡(jiǎn)單的示例。所以這是我的:


docker-compose.yml


mongodb:

  image: mongo

  ports:

    - "27017:27017"


mongo-seed:

  build: ./mongo-seed

  links:

    - mongodb


# my webserver which uses mongo (not shown in example)

webserver:

  build: ./webserver

  ports:

    - "80:80"

  links:

    - mongodb

mongo-seed / Dockerfile


FROM mongo


COPY init.json /init.json

CMD mongoimport --host mongodb --db reach-engine --collection MyDummyCollection --type json --file /init.json --jsonArray

mongo-seed / init.json


[

  {

    "name": "Joe Smith",

    "email": "jsmith@gmail.com",

    "age": 40,

    "admin": false

  },

  {

    "name": "Jen Ford",

    "email": "jford@gmail.com",

    "age": 45,

    "admin": true

  }

]


查看完整回答
反對(duì) 回復(fù) 2019-12-13
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

我發(fā)現(xiàn)使用Docker自定義映像和使用卷很有用,而不是創(chuàng)建另一個(gè)用于播種的容器。


檔案結(jié)構(gòu)


.

├── docker-compose.yml

├── mongo

│   ├── data

│   ├── Dockerfile

│   └── init-db.d

│       └── seed.js

Dockerfile/中提到的每個(gè)文件位置docker-compose.yml都相對(duì)于docker-compose.yml


DOCKERFILE


FROM mongo:3.6


COPY ./init-db.d/seed.js /docker-entrypoint-initdb.d

docker-compose.yml


version: '3'


services:

  db:

    build: ./mongo

    restart: always

    volumes:

      - ./mongo/data:/data/db #Helps to store MongoDB data in `./mongo/data`

    environment:

      MONGO_INITDB_ROOT_USERNAME: {{USERNAME}}

      MONGO_INITDB_ROOT_PASSWORD: {{PWD}}

      MONGO_INITDB_DATABASE: {{DBNAME}}

seed.js


// Since Seeding in Mongo is done in alphabetical order... It's is important to keep

// file names alphabetically ordered, if multiple files are to be run.


db.test.drop();

db.test.insertMany([

  {

    _id: 1,

    name: 'Tensor',

    age: 6

  },

  {

    _id: 2,

    name: 'Flow',

    age: 10

  }

])

docker-entrypoint-initdb.d可以用于創(chuàng)建不同的用戶(hù)和mongodb管理相關(guān)的東西,只需創(chuàng)建按字母順序排序的名為js腳本的腳本即可,createUser等等。


有關(guān)如何自定義MongoDB Docker服務(wù)的更多詳細(xì)信息,請(qǐng)閱讀此


另外,最好確保您的密碼和用戶(hù)名不受Public的影響,不要將憑據(jù)推送到public git上,而應(yīng)使用Docker Secrets。另請(qǐng)閱讀本秘密教程


請(qǐng)注意,不必進(jìn)入docker-swarm模式即可使用機(jī)密。撰寫(xiě)文件也支持秘密。檢查一下


秘密也可以在MongoDB Docker Services中使用


查看完整回答
反對(duì) 回復(fù) 2019-12-13
?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以使用Mongo Seeding Docker映像。


為什么?


您已經(jīng)準(zhǔn)備好使用Docker映像了

您不受JSON文件的束縛-還支持JavaScript和TypeScript文件(包括使用TypeScript進(jìn)行的可選模型驗(yàn)證)

Docker Compose的示例用法:


version: '3'

services:

  database:

    image: 'mongo:3.4.10'

    ports:

    - '27017:27017'

  api:

    build: ./api/

    command: npm run dev

    volumes: 

    - ./api/src/:/app/src/

    ports:

    - '3000:3000'

    - '9229:9229'

    links:

    - database

    depends_on:

    - database

    - data_import

    environment: 

    - &dbName DB_NAME=dbname

    - &dbPort DB_PORT=27017 

    - &dbHost DB_HOST=database

  data_import:

    image: 'pkosiec/mongo-seeding:3.0.0'

    environment:

    - DROP_DATABASE=true

    - REPLACE_ID=true

    - *dbName

    - *dbPort

    - *dbHost

    volumes:

    - ./data-import/dev/:/data-import/dev/

    working_dir: /data-import/dev/data/

    links:

    - database

    depends_on:

    - database

免責(zé)聲明:我是這個(gè)圖書(shū)館的作者。


查看完整回答
反對(duì) 回復(fù) 2019-12-13
  • 3 回答
  • 0 關(guān)注
  • 1112 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)