Dockerfile> RUN mongoimport =>失败:连接到数据库服务器时出错:没有可访问的服务器

时间:2018-12-06 22:35:47

标签: mongodb docker-compose dockerfile

作为Docker的新手,我试图通过工作目录中的kube-proxy来构建一个包含一些示例数据的mongoDB Docker容器。

我的docker-compose.yml包含以下代码:

mongo/Dockerfile

在最后一行中,示例数据将导入到mongoDB。

我的FROM mongo:latest ADD shops.json /home/ RUN mongoimport --db masterdata --collection shops --file /home/shops.json 包含以下代码:

docker-compose.yml

使用上述配置,我尝试构建MongoDB docker容器并出现错误:

version: '3'
  services:
    mongo:
    build: mongo
    ports:
    - "27017:27017"

此问题与mongoimport Docker Failed: error connecting to the db server: no reachable servers相似,但我确实尝试了mongoimport Docker Failed: error connecting to the db server: no reachable servers中给出的所有建议,但始终无法解决此错误。

那么任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在启动图像容器之前,不会启动mongo数据库。 Dockerfile只处理映像中的文件和文件夹,而不会启动任何服务。

要将json导入数据库,您可以编写一个bash脚本,它将启动mongo服务并导入json。您可以将此脚本设置为图像的输入脚本。

答案 1 :(得分:1)

RUN mkdir -p /opt/acrc/config
COPY *.json /opt/acrc/config/
RUN mongod --fork --logpath=/tmp/mongodb.log && sleep 20 && \
  mongoimport -c=users -d=acrc --mode=upsert --file=/opt/acrc/config/users.json && \
  mongoimport -c=tasks -d=acrc --mode=upsert --file=/opt/acrc/config/tasks.json && \
  mongoimport -c=configs -d=acrc --mode=upsert --file=/opt/acrc/config/configs.json && \
  mongoimport -c=agentGroupConfigs -d=acrc --mode=upsert --file=/opt/acrc/config/agentGroupConfigs.json