Docker-compose运行多个脚本

时间:2015-08-25 14:49:53

标签: npm docker-compose fig package.json

我正在使用docker-compose和yml文件来启动容器。 package.json中有两个脚本我想调用:

"dev-start": "nodemon src/index.js",
"dev-migrate": "db-migrate --migrations-dir src/migrations --config src/database.json up"

为了调用一个我使用命令:脚本名称,如何调用多个脚本?

2 个答案:

答案 0 :(得分:0)

如果您希望在应用程序运行时启动迁移,请使用docker exec -it name-of-container bash在正在运行的容器中打开shell并执行命令。

如果您需要在首次启动应用程序之前运行迁移,请运行docker-compose run name-of-service bash,运行初始化数据库的命令,退出并正常启动docker-compose

如果您希望在每次启动应用程序之前运行迁移,您可以编写一个shell脚本来执行这两个操作(迁移,然后启动应用程序)将其复制到映像中并调用它作为您的默认命令。

对于前两段,您也可以直接启动迁移命令,而不是运行bash

答案 1 :(得分:0)

我认为,最好将迁移和服务器分开。 我总是这样做,就像我有两项服务一样,一项用于运行服务器,另一项用于将数据迁移到数据库中。如果您认为将它们分开做两个不同的工作是有意义的。

services:
migrate:
   build: .
   command: db-migrate --migrations-dir src/migrations --config src/database.json up
   depends_on:
     - db
   env_file:
     - .env
web:
   build: .
   command: nodemon src/index.js
   ports:
     - 8000:8000
   env_file:
     - .env
   depends_on:
     - db
     - migrate
 db:
   image: postgres:12.0-alpine
   volumes:
     - postgres_data:/var/lib/postgresql/data/