Docker-Compose:初始化与运行

时间:2015-03-27 15:05:56

标签: docker docker-compose

我将现有的rails应用程序迁移到docker和docker-compose。有一些脚本只需要在创建容器时运行,例如将prod db复制到卷中并在Elasticsearch中对其编制索引的脚本。

从那时起,当我在本地启动容器进行开发时,我只想运行rails开发服务器而不是所有的db init脚本。除了webapp容器上的init选项之外,我可以创建两个与其相同的docker-compose文件(比如runcommand:)。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

基础Docker系统没有"运行"自定义脚本的概念。

您可以做的是这些方法之一:

  • 添加到您的脚本中,检查它是否已经完成了。如果你一次又一次地重新运行它并不重要。
  • 将db集成到docker中,并按照已加载的数据发送它。
  • 制作一个2部分的泊坞系统:第一个将是你现在知道的一个可能的" ONBUILD"命令所以第二个将运行脚本。然后第二个docker是一个继承原始的docker并且运行脚本有或没有" ONBUILD"以上。在docker-compose中,您将拥有一个本地构建,该构建将在创建本地docker镜像时触发导入。

只是一个想法

答案 1 :(得分:0)

您可以在撰写* .yml文件中使用extends

Extend documentation and examples.