Dockerfile、Nodejs、mongodb 导入
Dockerfile, Nodejs, mongodb import
我正在做我的 Dockerfile,当我想在 mongodb 中导入我的 bbd.json 时,我遇到了错误。
我已经搜索过这个错误,我发现了这个:add --host localhost 或 add --host=localhost(或 127.0.0.0)我都试过了,但是 none 正在工作。
这是我的 Dockerfile:
FROM node:argon
RUN apt-get update
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
#RUN echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN apt-get update
RUN apt-get -y install vim-tiny
#RUN vim /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN apt-get update
RUN apt-get install -y mongodb-org=3.2.10 mongodb-org-server=3.2.10 mongodb-org-shell=3.2.10 mongodb-org-mongos=3.2.10 mongodb-org-tools=3.2.10
RUN npm install mongoose
RUN npm install body-parser
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
RUN mongod&
RUN mkdir /usr/test
RUN mkdir -p /data/db
RUN mongod --dbpath /usr/test --fork --syslog
RUN mongoimport --db bdd --collection users --file bdd.json
RUN cp /usr/test/* .
EXPOSE 3000
CMD ["npm", "start"]
这里是错误:
Step 17/19 : RUN mongoimport --host localhost --db apirest --collection users --file bdd.json
---> Running in 028f35e6e2ab
2017-04-03T11:40:57.406+0000 [........................] apirest.users 0B/23.9KB (0.0%)
2017-04-03T11:40:57.910+0000 Failed: error connecting to db server: no reachable servers0.0%)
2017-04-03T11:40:57.911+0000 imported 0 documents
The command '/bin/sh -c mongoimport --host localhost --db apirest --collection users --file bdd.json' returned a non-zero code: 1
你有什么想法吗?谢谢。
这不起作用,因为在构建时,mongod 进程不是 运行。
我不会建议你如何让它工作,因为你的方法,将 mongod 和节点进程构建到同一个容器中,违背了标准 docker 哲学:你应该用一个来构建你的应用程序每个容器的服务,即 mongod 的单独服务。
你是对的,我不得不添加 运行 mongod& 但错误仍然存在。所以最后,我改变了这两行:
RUN mongod --dbpath /usr/test --fork --syslog
RUN mongoimport --db bdd --collection users --file bdd.json
合一:
RUN mongod --dbpath /usr/test --fork --syslog && mongoimport --db apirest --collection users --file bdd.json --jsonArray
而且效果很好!
谢谢大家!
我正在做我的 Dockerfile,当我想在 mongodb 中导入我的 bbd.json 时,我遇到了错误。 我已经搜索过这个错误,我发现了这个:add --host localhost 或 add --host=localhost(或 127.0.0.0)我都试过了,但是 none 正在工作。 这是我的 Dockerfile:
FROM node:argon
RUN apt-get update
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
#RUN echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN apt-get update
RUN apt-get -y install vim-tiny
#RUN vim /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN apt-get update
RUN apt-get install -y mongodb-org=3.2.10 mongodb-org-server=3.2.10 mongodb-org-shell=3.2.10 mongodb-org-mongos=3.2.10 mongodb-org-tools=3.2.10
RUN npm install mongoose
RUN npm install body-parser
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
RUN mongod&
RUN mkdir /usr/test
RUN mkdir -p /data/db
RUN mongod --dbpath /usr/test --fork --syslog
RUN mongoimport --db bdd --collection users --file bdd.json
RUN cp /usr/test/* .
EXPOSE 3000
CMD ["npm", "start"]
这里是错误:
Step 17/19 : RUN mongoimport --host localhost --db apirest --collection users --file bdd.json
---> Running in 028f35e6e2ab
2017-04-03T11:40:57.406+0000 [........................] apirest.users 0B/23.9KB (0.0%)
2017-04-03T11:40:57.910+0000 Failed: error connecting to db server: no reachable servers0.0%)
2017-04-03T11:40:57.911+0000 imported 0 documents
The command '/bin/sh -c mongoimport --host localhost --db apirest --collection users --file bdd.json' returned a non-zero code: 1
你有什么想法吗?谢谢。
这不起作用,因为在构建时,mongod 进程不是 运行。
我不会建议你如何让它工作,因为你的方法,将 mongod 和节点进程构建到同一个容器中,违背了标准 docker 哲学:你应该用一个来构建你的应用程序每个容器的服务,即 mongod 的单独服务。
你是对的,我不得不添加 运行 mongod& 但错误仍然存在。所以最后,我改变了这两行:
RUN mongod --dbpath /usr/test --fork --syslog
RUN mongoimport --db bdd --collection users --file bdd.json
合一:
RUN mongod --dbpath /usr/test --fork --syslog && mongoimport --db apirest --collection users --file bdd.json --jsonArray
而且效果很好! 谢谢大家!