容器启动后在 Docker 上运行 mongorestore

2023-12-31

我正在尝试设置一个运行 MongoDB 的容器,该容器在启动时使用 mongorestore 填充数据。这个想法是快速建立一个用于测试和模拟的虚拟数据库。

我的 Dockerfile 如下所示:

FROM mongo:bionic
COPY ./db-dump/mydatabase/* /db-dump/

docker-compose.yml 看起来像这样:

version: "3.1"
  
services:
  mongo:
    build: ./mongo
    command: mongorestore -d mydatabase ./db-dump
    ports:
      - "27017:27017"

如果我运行这个docker-compose up,它暂停了一段时间,然后我收到一条错误消息:

error connecting to host: could not connect to server: server selection error: server selection timeout, current topology: { Type: Single, Servers: [{ Addr: localhost:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: connection() : dial tcp 127.0.0.1:27017: connect: connection refused }, ] }

但是,在容器上打开 CLI 并运行完全相同的命令不会出现任何问题。我尝试过添加-h与容器的名称或 127.0.0.1 没有区别。为什么容器运行后该命令可以正常工作,但无法连接?


有一个比覆盖默认命令更好的方法 - 使用/docker-entrypoint-initdb.d:

当容器第一次启动时,它将执行带有扩展名的文件.sh and .js发现于/docker-entrypoint-initdb.d。文件将按字母顺序执行。.js文件将由 mongo 使用 MONGO_INITDB_DATABASE 变量指定的数据库(如果存在)执行,否则进行测试。您还可以在以下范围内切换数据库.js script.

[Source https://hub.docker.com/_/mongo]

所以你只需将该命令写入名为的文件中mongorestore.sh:

mongorestore -d mydatabase /db-dump

然后将其与转储文件一起安装在里面:

version: "3.1"
  
services:
  mongo:
    image: mongo:bionic
    ports:
      - "27017:27017"
    volumes:
      - ./mongorestore.sh:/docker-entrypoint-initdb.d/mongorestore.sh
      - ./db-dump:/db-dump

您甚至不需要 Dockerfile。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

容器启动后在 Docker 上运行 mongorestore 的相关文章

随机推荐

  • 如何使用 Google Cloud Composer 设置 dbt?

    我正在尝试在 Google Cloud Composer 上安装 dbt 但遇到了依赖性问题 我已按照本文的说明进行操作 https blog doit intl com setup dbt with cloud composer ab70
  • Twitter 登录崩溃并出现 TWTRInvalidInitializationException

    当我尝试使用 Twitter 登录时 我的应用程序崩溃并显示错误消息 在应用程序设置中未设置有效的 Twitter Kit URL 方案的情况下尝试登录或点赞推文 请参见https dev twitter com twitterkit io
  • 鼠标悬停时更改 html 中的字体颜色和背景

    我使用一小段内联 HTML 代码来更改鼠标悬停时表格中单元格颜色的背景 我仅在特定的表格单元格上使用此功能 因此并非所有单元格都需要这样做 td 这很好用 但我还想更改字体颜色 因此默认情况下它是带有白色文本的黑色单元格 但是当鼠标悬停时
  • 自升级到 Rails 3.1 以来,form_for 参数数量错误(3 为 2)

    在我将应用程序移植到 Rails 3 1 之前 这个 form for 曾经可以工作 div class form box style padding left 1em div
  • 创建一个名为“file.ext:file.ext”的文件到底有什么作用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我最近开始研究隐写术 并且在网上找到了一个教程 为了将新的文本文件隐藏在另一个文件中 教程提供者使用了类似于以下命令的内容 notepad
  • 静态成员函数的局部变量

    今天我们遇到了一个关于多线程环境中静态成员函数的问题 我们问自己但找不到满意答案的问题是 静态成员函数的局部变量也是静态的吗 header class A static int test implementation int A test
  • pandas dataframe 删除每个数字的第一行

    所以 基本上我有一个数据框 其第一列如下所示 1 2 2 3 3 3 3 4 4 5 如您所见 第一列由随机重复的数字组成 首先 我必须删除所有 然后删除每个数字的第一行 由于 1 只有一行 它应该消失 并且只有 2 的第二行保留 依此类推
  • 什么是 ASP.NET 提供程序?

    ASP NET Provider 中的 Provider 是什么意思 例如当我们谈论AuthorizationRuleProvider connectionStrings providerName 这是一种设计模式 提供商模型 http e
  • 在 foreach 中的 DataRow 上转换 null 文字或可能的 null 警告

    更新了我的 NET Core 3 1 控制台应用程序以使用 Nullables 功能并具有以下内容foreach loop DataTable profiles DB ListProfiles CS8600 warning here v f
  • AttributeError:模块“pandas”没有属性“to_csv”

    我从 csv 文件中取出了一些行 如下所示 pd DataFrame CV data take 5 columns CV data columns 并对其执行一些功能 现在我想再次将其保存在 csv 中 但出现错误module pandas
  • 如何更改 shell/bash 中的列名称?

    这个问题对于大多数人来说可能太简单了 但我真的不想手动做 所以 假设我在终端中有一个文件 如下所示 dz2t edison s GWAS head PHENO GWASID CHILDID VSTNUM GENDER GA 1001 100
  • 使用 ng-repeat 生成的项目中的增量计数器

    我用 ng repeat 生成了一个列表 其中每个项目都有一个计数变量 在列表项中 我有一个链接 我想在单击它时增加计数 我不知道如何用 Angular JS 方式解决这个问题 Plunker http plnkr co edit HfeL
  • Android googlemaps v2完成加载事件或回调

    我想在谷歌地图加载后做一些事情 maptiles已被填充 无论如何可以实现这一点吗 正如所指出的qubz https stackoverflow com users 496625 qubz ViewTreeObserver可用于实现地图加载
  • Angular2 检测模板视图中的元素是否具有类

    我们使用 bootstrap 有时它会自动向 DOM 元素添加类 附加到这些元素并检测何时将特定 css 类添加到组件模板子元素的最佳方法是什么 假设我有这个组件 import Component ViewChild ElementRef
  • 防止默认事件操作不起作用...?

    I m trying to add keyboard shortcuts on my website to make fast navigation possible using the keyboard I m running into
  • JPA本机查询返回类

    在 JPA 中 我定义了一个本机 sql 它将返回 String NamedNativeQuery name alert query select distinct c accountId from account c resultClas
  • Flutter Firestore 服务器端时间戳

    我需要在使用 Flutter 应用程序添加到 Firestore 的新文档上添加服务器端时间戳 我明白我应该使用FieldValue serverTimestamp但我不知道在哪里可以找到这个 截至9月5日 更新cloud firestor
  • 如何在 Tkinter 中使用 Canvas 绘制点?

    我想在Tkinter中画一个点 现在我正在使用Canvas做到了 但我没有找到这样的方法来画点Canvas class Canvas提供了一个方法叫做crete line x1 y1 x2 y2 所以我尝试设置x1 x2 y1 y2画一个点
  • 自动检查父复选框

    我有一个 AJAX 请求 该请求会拉入一个文件夹列表 每个列表项旁边都有一个复选框 如果我选中父文件夹旁边的复选框 则会通过执行以下操作自动检查所有子文件夹 var checkChildCheckBoxes function var isA
  • 容器启动后在 Docker 上运行 mongorestore

    我正在尝试设置一个运行 MongoDB 的容器 该容器在启动时使用 mongorestore 填充数据 这个想法是快速建立一个用于测试和模拟的虚拟数据库 我的 Dockerfile 如下所示 FROM mongo bionic COPY d