Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Npm Docker compose运行多个脚本_Npm_Docker Compose_Fig_Package.json - Fatal编程技术网

Npm Docker compose运行多个脚本

Npm Docker compose运行多个脚本,npm,docker-compose,fig,package.json,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" 要调用一个I use命令:script name,如何调用多个脚本?如果要在应用程序运行时启动迁移,请使用docker exe

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

"dev-start": "nodemon src/index.js",
"dev-migrate": "db-migrate --migrations-dir src/migrations --config src/database.json up"
要调用一个I use命令:script name,如何调用多个脚本?

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

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

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



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

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

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/

使用
命令:bash-c
使用
命令:bash-c