#node.js #docker
Вопрос:
А это мой файл с изображением Докера:
почему я получаю большое изображение docker с помощью этой команды Dockerfile, хотя я добавил .dockerignore, чтобы игнорировать модули узлов, есть ли способ решить этот размер изображения ? Можем ли мы использовать webpack для объединения и реализации встряхивания дерева и уменьшения размера для производства
Ответ №1:
- Чтобы уменьшить размер изображения docker, используйте
alpine
тег. этот тег использует Alpine Linux в качестве базового образа, и это уменьшит ваш встроенный образ. (Что такое Alpine Linux? Alpine Linux-это легкий дистрибутив Linux, ориентированный на безопасность, основанный на musl, libc и busybox.) - вы можете использовать многоступенчатые сборки для создания образа docker.
- используйте
npm prune --production
, эта команда удалит пакеты, указанные в ваших зависимостях от разработчиков.
Образец Dockerfile
, соответствующий указанным условиям:
FROM node:14-alpine as build
WORKDIR /opt/app
COPY . /opt/app
RUN npm ci
amp;amp; npm run build
amp;amp; npm prune --production
FROM node:14-alpine
ENV NODE_ENV=production
USER node
WORKDIR /opt/app
COPY --from=build /opt/app/package*.json /opt/app/
COPY --from=build /opt/app/node_modules/ /opt/app/node_modules/
COPY --from=build /opt/app/dist/ /opt/app/dist/
EXPOSE 3000
CMD ["npm", "run", "start:prod"]
Комментарии:
1. можете ли вы предоставить простое
Dockerfile
?
Ответ №2:
вы можете использовать alpine
изображение docker, например node:14.5.0-alpine
рекомендуется использовать изображения alpine, так как это быстро, безопасно и легко
Комментарии:
1. при выполнении установки npm он делает модули узла правильными, а затем КОПИРУЕТ., является ли КОПИРОВАНИЕ.. означает, что docker копирует весь исходный код, включая модули узла, в образ docker ? но на самом деле у меня есть модули узлов игнорирования в файле .dockerignore