使用Docker-Compose在MongoDB上导入数据 [英] Import Data on MongoDB using Docker-Compose

查看:247
本文介绍了使用Docker-Compose在MongoDB上导入数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有很多站点显示如何使用以下docker-compose方法将数据导入mongodb,但我找不到数据库服务器.

There are many sites that show how to import data to a mongodb using the below docker-compose method but mine is not finding the db server.

如何使用docker播种mongo数据库组成? https://gist.github.com/jschwarty/6f9907e2871d1ece5bde53d259c18d5f https://docs.codefresh.io/v1 .0/docs/import-data-to-mongodb-in-composition

想知道是否有什么变化使它不再起作用.

Wondering if something has changed making this not work any longer.

docker-compose.yml

version: '3'
services:
  mongodb:
    image: mongo
    command: mongod --smallfiles
    ports:
      - 27017

  mongo_seed:
    build: mongo-seed/.
    links:
      - mongodb

mongo-seed/Dockerfile

FROM mongo

COPY census.json /census.json

CMD mongoimport --host mongodb --db test --collection census --type json --file /census.json --jsonArray

mongo-seed/census.json

[
 {
   "Geography": "Abbeville city, Alabama",
   "Census": "2688"
 }
]

docker-compose up

ERROR after docker-compose up

mongodb_1     | 2018-01-09T21:57:14.353+0000 I NETWORK  [initandlisten] waiting for connections on port 27017
mongo_seed_1  | 2018-01-10T00:19:58.286+0000    [........................] test.census 0B/1KB (0.0%)
mongo_seed_1  | 2018-01-10T00:19:58.332+0000    [........................] test.census 0B/1KB (0.0%)
mongo_seed_1  | 2018-01-10T00:19:58.332+0000    Failed: error connecting to db server: no reachable servers
mongo_seed_1  | 2018-01-10T00:19:58.332+0000    imported 0 documents

mongoimport 语句中,我尝试使用其他主机名: mongodb_1 127.0.0.1 localhost .

In the mongoimport statement, I have tried using different host names: mongodb_1, 127.0.0.1, localhost.

我已阅读到,如果设置了 replSet ,则会出现此错误,但我没有设置 replSet ,除非它是默认设置,否则我不知道如何设置禁用它.

I have read that if replSet is set it can give this error but I'm not setting replSet unless it's default in which case I don't know how it disable it.

我也尝试过 mongorestore 而不是 mongoimport ,但是会遇到相同的错误.

I have also tried mongorestore instead of mongoimport but get the same error.

我读过,因为 link 在Docker中已被弃用,因为环境变量可能不再起作用.不知道这是真的还是发生在这里.

I have read since link is deprecated in Docker that maybe environmental variables are no longer working. Not sure if that is true or happening here.

有人有想法吗?

推荐答案

我最终删除了Dockerfile,在bash脚本中添加了命令,然后从docker-compose文件中调用了该脚本.在docker-compose文件中使用脚本而不是一个命令,因为我要导入多个文件,因此示例中未显示多个命令.我需要使用mongo:3.2.6来完成这项工作.可能还有其他版本,但是肯定可以使用.

I ended up removing the Dockerfile, adding the commands in a bash script, then calling the script from the docker-compose file. Used a script rather than one command in the docker-compose file because I'm importing several files thus several commands that are not shown in my example. I needed to use mongo:3.2.6 to make this work. There may be other versions but this one works for sure.

docker-compose.yml

version: '3'
services:
  mongodb:
    image: mongo:3.2.6
    ports:
      - 27017:27017

  mongo_seed:
    image: mongo:3.2.6
    links:
      - mongodb
    volumes:
      - ./mongo-seed:/mongo-seed
    command:
      /mongo-seed/import.sh

/mongo-seed/import.sh

#! /bin/bash

mongoimport --host mongodb --db test --collection census --type json --file /mongo-seed/census.json --jsonArray

这篇关于使用Docker-Compose在MongoDB上导入数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆