mongodb - 使用 Docker-Compose 在 MongoDB 上导入数据

标签 mongodb docker docker-compose dockerfile

有许多网站展示了如何使用以下 docker-compose 方法将数据导入 mongodb,但我的网站没有找到 db 服务器。

How do I seed a mongo database using docker-compose? https://gist.github.com/jschwarty/6f9907e2871d1ece5bde53d259c18d5f https://docs.codefresh.io/v1.0/docs/import-data-to-mongodb-in-composition

想知道是否发生了变化,使其不再起作用。

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 后出现错误

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_1127.0.0.1localhost.

我已经读过,如果 replSet 被设置,它会给出这个错误,但我没有设置 replSet 除非它是默认值,在这种情况下我不知道它是如何设置的禁用它。

我也尝试过 mongorestore 而不是 mongoimport 但得到了同样的错误。

自从 link 在 Docker 中被弃用后,我已经读到可能环境变量不再起作用。不确定这是真的还是发生在这里。

有人有想法吗?

最佳答案

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

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

关于mongodb - 使用 Docker-Compose 在 MongoDB 上导入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48178870/

相关文章:

mysql - 可以使用git同步不同机器上的docker容器吗?

MongoDB - MongoEngine - 保存嵌入式文档不起作用 - 没有属性保存

docker - Docker中的Go Lang 1.8服务器未在给定端口上监听

docker - Docker为什么找不到现有软件包?

docker - 在docker-in-docker镜像docker守护进程中设置不安全的注册表

docker - 运行 docker-compose 时,我得到 : client version 1. 38 is too new。支持的最大 API 版本为 1.37"

javascript - 获取另一个地理坐标和距离

python - 在 Pyramid 中,如何从 View 中返回原始 HTML?

javascript - 创建一个新文档,使用聚合对具有特定值的字段进行求和

docker-compose - 如何使用 laradock 和 docker-compose 版本 3 为 nginx 容器分配静态 IP