Миграция Adonis ace на Docker - SyntaxError: неожиданный идентификатор

Я получаю сообщение об ошибке "SyntaxError: Unexpected identifier" при попытке запустить node ace migration:run --force

/app/startup.sh:3
. node ace migration:run --force
       ^^^

SyntaxError: Unexpected identifier
    at wrapSafe (internal/modules/cjs/loader.js:1054:16)
    at Module._compile (internal/modules/cjs/loader.js:1102:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

Dockerfile

FROM node:12 AS bizi
COPY . /app
WORKDIR /app
RUN ["npm", "i"]

Я запускаю контейнер с startup.sh сценарий оболочки, вот где возникает ошибка:

#!/bin/sh
cd /app
node ace migration:run --force
adonis serve

Соберите и запустите контейнер:

docker build -t myapp .
docker run -p 8080:80 myapp startup.sh

Вот все мои зависимости для моего package.json файл:

  "dependencies": {
    "@adonisjs/ace": "^5.0.8",
    "@adonisjs/ally": "^2.1.3",
    "@adonisjs/auth": "^3.0.7",
    "@adonisjs/bodyparser": "^2.0.5",
    "@adonisjs/cors": "^1.0.7",
    "@adonisjs/fold": "^4.0.9",
    "@adonisjs/framework": "^5.0.13",
    "@adonisjs/generic-exceptions": "^3.0.1",
    "@adonisjs/ignitor": "^2.0.8",
    "@adonisjs/lucid": "^6.1.3",
    "@adonisjs/mail": "^3.0.9",
    "@adonisjs/validator": "^5.0.6",
    "@azure/service-bus": "^1.1.7",
    "axios": "^0.19.0",
    "cpf-check": "^3.0.0",
    "firebase-admin": "^8.3.0",
    "moment": "^2.24.0",
    "order-id": "^1.1.0",
    "pg": "^7.12.0",
    "require-dir": "^1.2.0",
    "uuid": "^3.3.2"
  }

Если я помещу команды ace в Dockerfile, они будут в порядке.

Возможно, мне не хватает конфигурации Linux?

FROM node:12 AS bizi
COPY . /app
WORKDIR /app
RUN ["npm", "i"]

# Added ace commands
RUN node ace
RUN node ace migration:run --force

Это результат сборки докера с командами ace внутри, проблема, похоже, возникает только тогда, когда я запускаю оболочку.

Step 5/6 : RUN node ace --help
 ---> Running in f9bd319e8031
Usage:
  command [arguments] [options]

Global Options:
  --env                  Set NODE_ENV before running the commands
  --no-ansi              Disable colored output
  --version              output the version number

Available Commands:
  seed                   Seed database using seed files
 connect
  connect:fridge-queue   Tell something helpful about this command
 make
  make:validator         Make route validator
 migration
  migration:refresh      Refresh migrations by performing rollback and then running from start
  migration:reset        Rollback migration to the first batch
  migration:rollback     Rollback migration to latest batch or to a specific batch number
  migration:run          Run all pending migrations
  migration:status       Check migrations current status

Я получал аналогичную ошибку с @adonisjs/cli при попытке запустить миграцию.

1 ответ

Я перешел с node изображение для ubuntu и сам настроил установку узла, чтобы решить проблему.

FROM ubuntu:latest
USER root

RUN apt-get update
RUN apt -y upgrade
RUN apt-get -y install curl gnupg
RUN curl -sL https://deb.nodesource.com/setup_12.x  | bash -
RUN apt-get -y install nodejs

COPY . /app
WORKDIR /app
RUN npm i -g @adonisjs/cli
RUN npm i
`` 

Хорошим решением может быть добавление команды в package.json и вызов ее в среде докеров. Некоторым нравится:

Package.json:

...
"scripts": {
  "start": "node server.js",
  "test": "node ace test",
  "serve": "adonis serve"
  "migrate:force": "ace migration:run --force"
},
...

В вашем файле.sh:

...
npm run migrate:force
npm run serve
...
Другие вопросы по тегам