使用docker-compose时如何仅运行一次npm脚本?

时间:2019-04-26 05:49:09

标签: docker docker-compose

我试图弄清楚如何使用docker-compose运行npm脚本,但是我只想运行一次(如果尚未创建数据量,例如,非常第一次我{ {1}}。

该脚本使用Sequelize CLI为数据库运行种子文件,但是如果多次运行该种子文件,则由于重复的键约束冲突,它将在我的数据库中出错。

这是因为我正在使用数据量(因此,如果以前运行过它,则该数据量已经存在)。

哦,这需要在另一个脚本(迁移脚本)运行之后运行。

所以顺序:

  1. docker-compose build && docker-compose up <-每次运行npm run db:migrate时都可以运行

  2. docker-compose up <-只要未创建持久卷,此操作只能运行一次

  3. 其他任何脚本现在都可以运行(以启动服务器)

是否有npm run db:seed可以使用的类似概念?

1 个答案:

答案 0 :(得分:0)

您使用了哪个数据库?

在许多情况下(例如maraidbmongodb),您可以使用目录/docker-entrypoint-initdb.d 如果容器启动,则将按字母顺序执行每个装入的文件。

要仅在第一次启动脚本时进行操作,应检查是否已存在数据库。

编辑:看一下doku,支持的文件类型。 .sql.js应该在大多数情况下都应该开展工作,但是对于npm,我不愿意