3 回答

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
}
]

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中使用

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ū)館的作者。
- 3 回答
- 0 關(guān)注
- 1112 瀏覽
添加回答
舉報(bào)