启动预构建的docker镜像后运行命令的最佳实践

时间:2017-07-01 07:46:19

标签: docker rabbitmq bitnami

在下载和旋转预构建的Docker Image后运行代码的最佳做法是什么?例如,我使用Bitnamis RabbitMQ图像来旋转运行RabbitMQ的容器(显然):https://hub.docker.com/r/bitnami/rabbitmq

在容器启动并且RabbitMQ正在运行之后,我想下载并启用一个额外的RabbitMQ-Plugin。作为Docker-Newbie我遇到两个问题:

  1. RabbitMQ需要一些时间来初始化,可能需要20-30秒
  2. 在初始化完成后需要启用插件
  3. 现在,我旋转容器,等待30秒并在终端上手动执行命令,如

      

    docker exec -it wget -O /plugins/folder/newplugin.ez https://pluginlocation.com/newplugin.ez&& rabbitmq-plugins启用newplugin`

    这样可行,但有没有推荐的方法一次性完成所有这些操作?我尝试在进程的基础上使用我自己的Dockerfile:

      

    FROM bitnami / rabbitmq:latest

         

    RUN wget -O /plugins/folder/newplugin.ez https://pluginlocation.com/newplugin.ez

         

    运行rabbitmq-plugins启用newplugin

    但是在这一点上,RabbitMQ尚未初始化,因此启用插件失败。

    最佳

    -act

1 个答案:

答案 0 :(得分:1)

您可以在不使用void *bar(){ 400846: 55 push %rbp 400847: 48 89 e5 mov %rsp,%rbp std::cout << "bar" << std::endl; 40084a: be 84 09 40 00 mov $0x400984,%esi 40084f: bf 60 10 60 00 mov $0x601060,%edi 400854: e8 b7 fe ff ff callq 400710 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt> 400859: be 30 07 40 00 mov $0x400730,%esi 40085e: 48 89 c7 mov %rax,%rdi 400861: e8 ba fe ff ff callq 400720 <_ZNSolsEPFRSoS_E@plt> } 400866: 90 nop 400867: 5d pop %rbp 400868: c3 retq 0000000000400869 <_Z3foov>: void foo(){ 400869: 55 push %rbp 40086a: 48 89 e5 mov %rsp,%rbp std::cout << "foo" << std::endl; 40086d: be 88 09 40 00 mov $0x400988,%esi 400872: bf 60 10 60 00 mov $0x601060,%edi 400877: e8 94 fe ff ff callq 400710 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt> 40087c: be 30 07 40 00 mov $0x400730,%esi 400881: 48 89 c7 mov %rax,%rdi 400884: e8 97 fe ff ff callq 400720 <_ZNSolsEPFRSoS_E@plt> } 400889: 90 nop 40088a: 5d pop %rbp 40088b: c3 retq 000000000040088c <main>: int main(void){ 40088c: 55 push %rbp 40088d: 48 89 e5 mov %rsp,%rbp foo(); 400890: e8 d4 ff ff ff callq 400869 <_Z3foov> bar(); 400895: e8 ac ff ff ff callq 400846 <_Z3barv> return 0; 40089a: b8 00 00 00 00 mov $0x0,%eax } 40089f: 5d pop %rbp 4008a0: c3 retq 选项的正在运行的代理的情况下启用插件 所以你的--offline可能是:

Dockerfile

顺便说一句,在一层中做相关事情(例如下载和启用插件)是good practice