Миграция 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
...