Docker撰写knex脚本错误

时间:2017-09-08 05:21:19

标签: node.js docker docker-compose knex.js

我的docker撰写文件如下:

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 up它旋转mysql并且也进行链接时,我的要求是当myImage旋转时,我想要执行一些knex迁移。 试过两种方式:

  1. 在docker compose文件中添加了Command,如上所示。
  2. 没有命令旋转容器,然后猛击到容器并尝试运行knex迁移命令。
  3. 应用程序映像依赖于包json文件中的knex,我也可以在节点模块目录中看到knex模块。

    但是在任何一种情况下我都会因缺少knex脚本而出错:

    npm ERR! missing script: knex
    

    对上述任何建议都表示高度赞赏。

1 个答案:

答案 0 :(得分:0)

运行它时,你的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 script

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