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

问题描述 投票:0回答:1

我试图弄清楚如何使用docker-compose运行npm脚本,但我只想运行一次(如果尚未创建数据量 - 例如我第一次使用docker-compose build && docker-compose up)。

该脚本使用Sequelize CLI为数据库运行种子文件,但如果多次运行,则由于重复的键约束违规,我的数据库中的错误。

这是因为我正在使用数据卷(因此,如果之前已经运行过,那么它已经存在)。

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

所以按顺序:

  1. npm run db:migrate docker-compose up正在运行
  2. npm run db:seed
  3. 现在可以运行任何其他脚本(启动我的服务器)

有这样的概念可以和docker-compose一起使用吗?

docker docker-compose
1个回答
0
投票

你使用哪个数据库?

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

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

编辑:看看doku,支持哪些文件类型。 qazxsw poi和.sql学校工作最多,但对于.js我不是舒尔

© www.soinside.com 2019 - 2024. All rights reserved.