Size: a a a

Docker — русскоговорящее сообщество

2020 February 27

a

arts in Docker — русскоговорящее сообщество
Дмитрий 🔥 e15
коллеги подскажите рецепт, если вдруг кто то сталкивался: есть react приложение, и при билде очень долго собирается, более 20 мин, при этом в stdout пишет кучу варнингов - но при этом билдиться успешно. В одном из мест пишет что добавлено достаточное количество пакетов для сборки (предполагаю что это и связано с тем что так долго собирается) есть ли какой то инструмент или способ - проверить все пакеты в package.json и исключить их из сборки, чтоб в итоге сама сборка не занимала так долго времени.
За ранее спасибо
Собрать один раз образ с node_modules и уже на основе него билдить образ с приложением, без всяких npm install, только с вебпаком
источник

MD

M Dan in Docker — русскоговорящее сообщество
поди у вас кэширование слоев неверно отрабатыавет
источник

MD

M Dan in Docker — русскоговорящее сообщество
плюс часть пакетов из исходников и тп компилируется
источник

Д

Дмитрий 🔥 e15 in Docker — русскоговорящее сообщество
M Dan
плюс часть пакетов из исходников и тп компилируется
ок, я не разработчик - как то это проверить можно?
источник

MD

M Dan in Docker — русскоговорящее сообщество
Дмитрий 🔥 e15
ок, я не разработчик - как то это проверить можно?
Ну сначала первое решите
источник

MD

M Dan in Docker — русскоговорящее сообщество
Второе уже забтете
источник

MD

M Dan in Docker — русскоговорящее сообщество
Забьтее
источник

MD

M Dan in Docker — русскоговорящее сообщество
Покажи докерАйл
источник

Д

Дмитрий 🔥 e15 in Docker — русскоговорящее сообщество
M Dan
Покажи докерАйл
FROM node:13.0.1 as builder

WORKDIR /app

COPY . .
RUN npm install && npm run build && ls -l

FROM nginx:1.16.0-alpine
COPY --from=builder /app/build /usr/share/nginx/html
RUN ls -l /usr/share/nginx/html && rm -rf /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
источник

A

Andrey in Docker — русскоговорящее сообщество
Дмитрий 🔥 e15
FROM node:13.0.1 as builder

WORKDIR /app

COPY . .
RUN npm install && npm run build && ls -l

FROM nginx:1.16.0-alpine
COPY --from=builder /app/build /usr/share/nginx/html
RUN ls -l /usr/share/nginx/html && rm -rf /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Только вариант, собрать ещё один контейнер как базовый, запихнуть в него то что нечасто меняется и положить в реджистри, а на его основе делать уже существующий с меньшим количеством пакетов
источник

A

Andrey in Docker — русскоговорящее сообщество
Ну и если собираешь в гитлаб,там есть настройки кеширования
источник

MD

M Dan in Docker — русскоговорящее сообщество
Дмитрий 🔥 e15
FROM node:13.0.1 as builder

WORKDIR /app

COPY . .
RUN npm install && npm run build && ls -l

FROM nginx:1.16.0-alpine
COPY --from=builder /app/build /usr/share/nginx/html
RUN ls -l /usr/share/nginx/html && rm -rf /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Мусор. Должно быть копи пекецлж Лок пекецлж джсог сначала внутрь
источник

MD

M Dan in Docker — русскоговорящее сообщество
Потом установка пакетов с помощью npm ci
источник

MD

M Dan in Docker — русскоговорящее сообщество
А потом уже копируете остальную часть проекта
источник

MD

M Dan in Docker — русскоговорящее сообщество
И делаете сборку фронта
источник

MD

M Dan in Docker — русскоговорящее сообщество
Тогда если у вас сменятся исходники
источник

MD

M Dan in Docker — русскоговорящее сообщество
Пакеты пересталвТьчя н ебудут
источник

MD

M Dan in Docker — русскоговорящее сообщество
Только если вдруг фронтмакака не добавила какой-то бесполезный пакет
источник

Д

Дмитрий 🔥 e15 in Docker — русскоговорящее сообщество
M Dan
Мусор. Должно быть копи пекецлж Лок пекецлж джсог сначала внутрь
тут немного не понял. Копируем package.json далее npm install. Потом копируем все в докер и собираем. Слышал где то что lock вообще не нужен при сборке. или ошибаюсь где то?
источник

MD

M Dan in Docker — русскоговорящее сообщество
Дмитрий 🔥 e15
тут немного не понял. Копируем package.json далее npm install. Потом копируем все в докер и собираем. Слышал где то что lock вообще не нужен при сборке. или ошибаюсь где то?
У всяких плохих веб-макак Лок файлик ассоциируется с болью и страданиями. Современные разработчики внезапно используют его по назначению. Фиксирование версий пакетов при сборке проекта. Правильно делать ci, а не инсталл
источник