Docker编写knex脚本错误

0pizxfdo  于 2023-06-05  发布在  Docker
关注(0)|答案(2)|浏览(127)

我的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

以上任何建议都是高度赞赏。

aamkag61

aamkag611#

运行package.json的目录是否正确?

npm run missing-script给出一个错误npm ERR! missing script: missing-script,如果脚本不存在。

你的package.json里面有knex脚本吗?

scripts: {
  knex: "knex"
}

在尝试运行迁移之前,是否运行过npm install

可能不是这个,但如果从package.json中正确找到knex脚本,则可能是必需的

您可能需要添加--以便能够将参数传递给npm run脚本

npm run knex -- migrate:latest --knexfile src/knexfile.js
jk9hmnmh

jk9hmnmh2#

您必须安装knex:bash npm install knex

Must have the script defined in the `package.json`:
```json
"scripts": {
  "knex": "node --no-warnings --loader tsx ./node_modules/.bin/knex",
},

相关问题