Docker-контейнер не запускается - появляется Java enoent error - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть dockerfile и файл docker-compose, который я использую для запуска узла безсерверного контейнера.

Это работало нормально до сегодняшнего дня, когда я попытался добавить новую конечную точку в файл serverless.yaml.

Я остановил контейнер, чтобы запустить его снова, и получил ошибку вызова Java enoent.

Я попытался отменить изменения в файле без сервера, отменить изменения в основном js-файле приложения узла и все остальные изменения, попытался воссоздать контейнер, очистить все существующие образы и все, что я мог придумать, чтобы попытаться запустить контейнер и всегда получаю одну и ту же ошибку:

Error: spawn java ENOENT
dock    |     at _errnoException (util.js:1022:11)
dock    |     at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
dock    |     at onErrorNT (internal/child_process.js:372:16)
dock    |     at _combinedTickCallback (internal/process/next_tick.js:138:11)
dock    |     at process._tickDomainCallback (internal/process/next_tick.js:218:9)

Это Dockerfile, который я использую:

FROM node:8.10.0
RUN apt-get update && apt-get install -y default-jre && apt-get clean
RUN mkdir -p /usr/src/app
COPY . /usr/src/app/
WORKDIR /usr/src/app/
EXPOSE 3000
RUN npm install
RUN npm i -g serverless
RUN sls dynamodb install
RUN serverless config credentials --provider aws --key [...] --secret [...]

Это файл docker-compose:

version: '2'
services:
  app:
    container_name: dock
    build: .
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - 8000:8000
      - 3000:3000
    command: sls offline start

Они оба находятся в каталоге проекта, и я запускаю sudo docker-compose up, чтобы запустить контейнер

Я не могу понять, что произошло, но что-то должно было измениться. Как я могу отладить это?

Спасибо.

1 Ответ

0 голосов
/ 13 сентября 2018

Я нашел два решения для этого, поэтому я просто оставлю их здесь.

Что касается ошибки при запуске контейнера, я смог исправить это, изменив файл docker-compose на

command: sls offline

вместо

command: sls offline start

После этого, и, имея возможность запустить контейнер, я понял, что на пакетах появилось обновление. Отмена их исправила проблему (я не заметил обновления этих пакетов, они не были сделаны специально, поэтому я предполагаю, что npm install или что-то в этом роде обновили пакеты):

Это были версии пакета с ошибками:

"serverless-dynamodb-local": "^0.2.33",
"serverless-offline": "^3.25.10",

Это были правильные и старые:

"serverless-dynamodb-local": "^0.2.28",
"serverless-offline": "^3.20.1",

Надеюсь, это поможет кому-то столкнуться с той же проблемой!

...