0

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

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

为了调用一个我使用命令:脚本名称,我怎样才能调用多个脚本?

4

2 回答 2

0

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

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

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


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

于 2015-08-25T18:50:44.360 回答
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/
于 2020-08-30T20:04:07.697 回答