我的docker compose文件看起来像这样:
version: '2'
services:
web:
build:
context: .
image: myimage
environment:
- AWS_REGION=region
- NODE_ENV=development
command: bash -c "sleep 10 && npm run knex migrate:latest --knexfile src/knexfile.js"
depends_on:
- db
db:
image: mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=root
- MYSQL_PASSWORD=root
- MYSQL_DATABASE=mydb
volumes:
- /var/lib
我的想法是,当我做一个docker-compose时,它会启动mysql,并进行链接,我的要求是,当myImage启动时,我希望执行一些knex迁移。尝试了两种方式:
1.在docker compose文件中添加Command,如上所示。
1.如果没有命令,请启动容器,然后bash到容器,并尝试运行knex migrate命令。
应用程序镜像在json包文件中依赖于knex,我可以在node modules目录中看到knex模块。
然而,在这两种情况下,我得到一个错误,缺少knex脚本:
npm ERR! missing script: knex
以上任何建议都是高度赞赏。
2条答案
按热度按时间aamkag611#
运行package.json的目录是否正确?
npm run missing-script
给出一个错误npm ERR! missing script: missing-script
,如果脚本不存在。你的package.json里面有knex脚本吗?
在尝试运行迁移之前,是否运行过
npm install
?可能不是这个,但如果从package.json中正确找到
knex
脚本,则可能是必需的您可能需要添加--以便能够将参数传递给npm run脚本
jk9hmnmh2#
您必须安装
knex
:bash npm install knex