gpt4 book ai didi

mongodb - 从mongodb docker-container运行脚本

转载 作者:行者123 更新时间:2023-12-02 19:36:19 26 4
gpt4 key购买 nike

我有还原数据库restore.sh的脚本:

mongorestore --port 27017 --db myapp `pwd`/db-dump/myapp

我想使用图像 mvertes/alpine-mongo在短暂的docker-container中运行此文件。

要运行短暂的容器,请使用 --rm:

docker run --rm --name mongo -p 27017:27017 \
-v /data/db:/data/db \
mvertes/alpine-mongo

但是,如何在同一命令中执行脚本?

最佳答案

查看docker run reference:

 $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

您可以传入您想要执行的命令。就您而言,这可能是还原脚本。但是,您必须考虑两件事。
  • 该脚本不是容器的一部分,因此您需要安装到容器中。
  • 指定命令会覆盖Dockerfile中的CMD指令。

  • 如果查看Dockerfile,则将其视为最后一行:
    CMD [ "mongod" ]

    这意味着容器执行的默认命令是 mongod。当您为 docker run指定命令时,可以用传递的命令“替换”该命令。在您的情况下:传递还原脚本将覆盖 mongod,这意味着Mongo从不启动,脚本将失败。

    您有两种选择:
  • 使用数据库启动一个容器,使用还原脚本启动另一个容器。
  • 尝试链接命令。

  • 由于您想在短期内运行它,因此选项2可能更适合您。只需记住使用 mongod标志启动 --fork即可在守护程序模式下运行它。
    $ docker run --rm --name mongo -p 27017:27017 \
    -v /data/db:/data/db \
    -v "$(pwd)":/mnt/pwd \
    mvertes/alpine-mongo "mongod --fork && /mnt/pwd/restore.sh"

    希望这是解决您的问题所需要的。

    关于mongodb - 从mongodb docker-container运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44833592/

    26 4 0
    文章推荐: php - PhpStorm无法从Docker容器读取PHP配置
    文章推荐: javascript - 如何使用 Greasemonkey 编辑 HTML