gpt4 book ai didi

mongodb - 在 dockerized mongo 上初始化数据

转载 作者:IT老高 更新时间:2023-10-28 13:07:25 26 4
gpt4 key购买 nike

我正在运行一个 dockerized mongo 容器。

我想用一些初始化数据创建一个 mongo 图像。

有什么想法吗?

最佳答案

更独立的方法:

  • 创建初始化数据库的 javascript 文件
  • 创建包含这些文件的派生 MongoDB docker 镜像

使用一次性容器或创建卷并将它们链接起来的答案有很多,但这似乎过于复杂。如果您查看 mongo docker 图像的 docker-entrypoint.sh ,您会看到第 206 行执行了 /docker-entrypoint-initdb.d/*.js使用语法初始化的文件:mongo <db> <js-file> .如果您创建包含种子数据的派生 MongoDB docker 镜像,您可以:

  • 有一个 docker run 命令,可以用种子数据建立一个 mongo
  • 通过容器停止和启动来持久化数据
  • 使用 docker stop、rm 和 run 命令重置该数据
  • 使用运行时调度程序(如 k8s、mesos、swarm、rancher)轻松部署

这种方法特别适合:

  • 只需要一些真实数据来展示的 POCs
  • 需要一致数据进行黑盒测试的 CI/CD 管道
  • 产品演示的示例部署(销售工程师、产品所有者)

如何:

  1. 创建和测试您的初始化脚本(根据需要整理数据)
  2. 为您的派生镜像创建一个 Dockerfile 以复制您的初始化脚本

    FROM mongo:3.4
    COPY seed-data.js /docker-entrypoint-initdb.d/
  3. 构建你的 docker 镜像

    docker build -t mongo-sample-data:3.4 .
  4. (可选)将您的图像推送到 docker 注册表以供其他人使用

  5. 运行你的 docker 镜像

    docker run                               \
    --name mongo-sample-data \
    -p 27017:27017 \
    --restart=always \
    -e MONGO_INITDB_DATABASE=application \
    -d mongo-sample-data:3.4

默认情况下,docker-entrypoint.sh 会将您的脚本应用到 test D b;上面的运行命令 env var MONGO_INITDB_DATABASE=application会将这些脚本应用到 application db 代替。或者,您可以在 js 文件中创建并切换到不同的 db。

我有一个 github 存储库可以做到这一点 - 这里是 relevant files .

关于mongodb - 在 dockerized mongo 上初始化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39348478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com