启动预构建 docker 映像后 运行 命令的最佳实践
Best Practice to run commands after starting up a prebuilt docker image
下载并启动预构建的 Docker 图像后,运行 代码的最佳做法是什么?例如,我使用 Bitnamis RabbitMQ 图像来启动容器 运行ning RabbitMQ(显然):https://hub.docker.com/r/bitnami/rabbitmq
在容器启动并且 RabbitMQ 正在 运行ning 之后,我想下载并启用一个额外的 RabbitMQ 插件。作为一个 Docker-新手,我遇到了两个问题:
- RabbitMQ 需要一些时间来初始化,可能需要 20-30 秒
- 初始化完成后需要启用插件
现在,我启动容器,等待 30 秒,然后在终端上手动执行命令,例如
docker exec -it wget -O /plugins/folder/newplugin.ez https://pluginlocation.com/newplugin.ez && rabbitmq-plugins enable newplugin`
这行得通,但是有推荐的方法可以一次完成所有这些吗?我尝试在流程之上使用我自己的 Docker 文件:
FROM bitnami/rabbitmq:latest
RUN wget -O /plugins/folder/newplugin.ez https://pluginlocation.com/newplugin.ez
RUN rabbitmq-plugins enable newplugin
但此时,RabbitMQ 尚未初始化,因此启用插件失败。
最佳
-行动
您可以在没有 运行 代理的情况下使用 --offline
选项启用插件。
所以你的 Dockerfile
可能是:
FROM bitnami/rabbitmq:latest
RUN curl -o /opt/bitnami/rabbitmq/plugins/newplugin.ez \
https://pluginlocation.com/newplugin.ez \
&& rabbitmq-plugins enable --offline newplugin
顺便说一句,good practice 在一层中执行相关操作(例如下载和启用插件)。
下载并启动预构建的 Docker 图像后,运行 代码的最佳做法是什么?例如,我使用 Bitnamis RabbitMQ 图像来启动容器 运行ning RabbitMQ(显然):https://hub.docker.com/r/bitnami/rabbitmq
在容器启动并且 RabbitMQ 正在 运行ning 之后,我想下载并启用一个额外的 RabbitMQ 插件。作为一个 Docker-新手,我遇到了两个问题:
- RabbitMQ 需要一些时间来初始化,可能需要 20-30 秒
- 初始化完成后需要启用插件
现在,我启动容器,等待 30 秒,然后在终端上手动执行命令,例如
docker exec -it wget -O /plugins/folder/newplugin.ez https://pluginlocation.com/newplugin.ez && rabbitmq-plugins enable newplugin`
这行得通,但是有推荐的方法可以一次完成所有这些吗?我尝试在流程之上使用我自己的 Docker 文件:
FROM bitnami/rabbitmq:latest
RUN wget -O /plugins/folder/newplugin.ez https://pluginlocation.com/newplugin.ez
RUN rabbitmq-plugins enable newplugin
但此时,RabbitMQ 尚未初始化,因此启用插件失败。
最佳 -行动
您可以在没有 运行 代理的情况下使用 --offline
选项启用插件。
所以你的 Dockerfile
可能是:
FROM bitnami/rabbitmq:latest
RUN curl -o /opt/bitnami/rabbitmq/plugins/newplugin.ez \
https://pluginlocation.com/newplugin.ez \
&& rabbitmq-plugins enable --offline newplugin
顺便说一句,good practice 在一层中执行相关操作(例如下载和启用插件)。