【问题标题】:MongoDB Container Dockerfile no reachable serversMongoDB 容器 Dockerfile 没有可访问的服务器
【发布时间】:2016-08-17 03:09:13
【问题描述】:

我正在尝试构建一个简单的 Dockerfile 以将文件从当前目录复制到容器中,然后运行 ​​mongorestore 命令来播种数据。我查看了许多不同的网站,但仍然收到以下错误。

2016-08-17T03:03:22.639+0000 失败:连接到数据库服务器时出错:没有可访问的服务器
命令 '/bin/sh -c mongorestore --drop /mongo-seed/mongo-seed-data/mongo-dump --host 127.0.0.1:27017' 返回一个非零代码:1

当我“bash”进入容器并使用相同的参数运行 mongorestore 命令时,它会填充数据库。我很茫然,请帮忙。

下面是 Dockerfile

FROM mongo

COPY . /mongo-seed
EXPOSE 27017


CMD ["mongod"]
RUN mongorestore --drop /mongo-seed/mongo-seed-data/mongo-dump --host 127.0.0.1:27017

【问题讨论】:

    标签: mongodb docker dockerfile


    【解决方案1】:

    CMD 在您启动容器时运行。 因此,当 docker 在构建映像时执行 dockerfile 的最后一个 RUN 指令时,mongod 没有运行。

    FROM mongo
    COPY . /mongo-seed
    # EXPOSE 27017 //not necessary, the mongo base image already has that instruction
    ENTRYPOINT mongod
    

    构建并运行:docker build -t foo . && docker run -d --name bar foo

    执行mongorestore命令:

    docker exec bar mongorestore --drop ...
    

    【讨论】:

    • 一切都按预期进行。需要使用 mongorestore 而不是 mongostore。我还在学习 CMD、ENTRYPOINT、RUN 等的不同用途。
    • 对不起,这是我的错字:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2014-10-23
    • 2019-03-25
    • 2017-08-04
    相关资源
    最近更新 更多