6

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

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

有没有更好的办法?

4

2 回答 2

2

基本 Docker 系统没有自定义脚本的“运行中”概念。

您可以做的是以下方法之一:

  • 添加到您的脚本中,检查它是否已经这样做了。然后,如果您一次又一次地重新运行它也没关系。
  • 将 db 集成到 docker 中,并按照已加载数据的方式运送它。
  • 制作一个 2 部分的 docker 系统:第一个将是您现在知道的 docker,带有可能的“ONBUILD”命令,因此第二个将运行脚本。然后第二个 docker 继承了原始的一个,并且会在有或没有上面的“ONBUILD”的情况下运行脚本。在 docker-compose 中,您将拥有一个本地构建,它会在创建本地 docker 映像时触发导入。

只是一个想法

于 2015-03-27T16:56:11.740 回答
0

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

扩展文档和示例。

于 2015-04-07T23:28:15.727 回答