Не запускается контейнер в Docker
Запускаю docker run -d -p 80:8080 --name furn --rm furn . Но docker ps -a ничего не показывает. Если запустить без --rm, docker run -d -p 80:8080 --name furn furn , то контейнер создается,а при попытке посмотреть docker logs furn пишет sh: cross-env: Permission denied
Dockerfile:
FROM node:14 as client
WORKDIR /app/client
COPY client/package.json /app/client
RUN npm install
COPY client /app/client
RUN npm run build
FROM node:16-alpine
WORKDIR /app
COPY server/package.json /app
RUN npm install
COPY server /app
COPY --from=client /app/client/build /app/client
EXPOSE 8080 CMD ["npm", "start"]
Ответы (2 шт):
Команда docker run --name furn --rm furn создаёт контейнер из образа furn, присваивает ему имя furn и запускает. Раз docker ps -a ничего не показывает, значит созданный контейнер завершается раньше, чем вы выдаёте эту команду.
Ключ --rm указывает докеру, что созданный контейнер должен быть удалён после запуска. Вот почему вы не можете найти этот контейнер после завершения команды docker run.
Ваш контейнер, судя по всему, запускает внутри себя что-то на node.js. Проверьте Dockerfile и выставьте разрешение на доступ к node_modules и остальным компонентам, которые используются приложением.
В Dockerfile вместо строчек
COPY client /app/client
RUN npm run build
Прописал строчку
COPY client/build /app/client/build
Проект заработал (в .dockerignore и .gitignore соответствующие настройки тоже сделать надо).