我正在使用docker-compose和yml文件来启动容器。 package.json中有两个脚本我想调用:
"dev-start": "nodemon src/index.js",
"dev-migrate": "db-migrate --migrations-dir src/migrations --config src/database.json up"
为了调用一个我使用命令:脚本名称,如何调用多个脚本?
答案 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/