У меня есть файл 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 [...]
Это файл для создания докеров:
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
, чтобы запустить контейнер.
Я не могу понять, что произошло, но что-то должно быть изменилось. Как я могу это отладить?
Спасибо.
@pacuna да, я сделал. Я уже нашел решение, оставлю как ответ
Я нашел два решения для этого, поэтому просто оставлю их здесь.
Что касается ошибки при запуске контейнера, я смог исправить это, изменив файл 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",
Надеюсь, это поможет кому-то столкнуться с той же проблемой!
вы пробовали отменить изменения, а затем
docker-compose down
?