如何使用docker compose将json导入mongo?
我正在尝试用mongodb映像启动docker容器,并导入默认的json集。 我见过很多人推荐——主机标志,但它似乎没有帮助如何使用docker compose将json导入mongo?,json,mongodb,docker,Json,Mongodb,Docker,我正在尝试用mongodb映像启动docker容器,并导入默认的json集。 我见过很多人推荐——主机标志,但它似乎没有帮助 version: '3' services: db: image: mongo:3.4.1 build: db ports: - "27017:27017" 和dockerfile FROM mongo WORKDIR /usr/src/db COPY init.json . RUN mon
version: '3'
services:
db:
image: mongo:3.4.1
build: db
ports:
- "27017:27017"
和dockerfile
FROM mongo
WORKDIR /usr/src/db
COPY init.json .
RUN mongod --bind_ip 127.0.0.1 --fork --logpath /var/log/mongodb.log
RUN mongorestore --host 127.0.0.1 --db test --collection users /usr/src/db/init.json
但我得到了通常的信息
Step 5/5 : RUN mongorestore --host 127.0.0.1 --db test --collection users /usr/src/db/init.json
---> Running in f953a6fd5331
2018-01-17T23:16:54.854+0000 Failed: error connecting to db server: no reachable servers
ERROR: Service 'db' failed to build: The command '/bin/sh -c mongorestore --host 127.0.0.1 --db test --collection users /usr/src/db/init.json' returned a non-zero code: 1
我尝试了IP地址0.0.0、127.0.0.1,容器名“db”,有/没有启动守护进程,在docker compose和dockerfile之间以各种顺序运行命令,但什么都没有 应该在同一docker层中启动数据库和init shell:
RUN mongod --bind_ip 127.0.0.1 --fork --logpath /var/log/mongodb.log &&\
mongorestore --host 127.0.0.1 --db test --collection users /usr/src/db/init.json
经过反复挖掘,我找到了答案,以及原因。 按照建议,docker启动容器,运行命令并关闭容器。数据不会持久化,因此您可以创建默认集,但它会在dockerfile的下一行丢失 答案是在mongo启动时创建集合 DockerFile
FROM mongo
WORKDIR /usr/src/data
COPY data.js /docker-entrypoint-initdb.d/
data.js
db = db.getSiblingDB('mycollection');
db.foo.insert({
"key": "value"
});