Следующие производственные зависимости js

Я пытаюсь создать контейнер докеров с приложением nextjs внутри. Докер-файл следующим образом:

FROM node:16.16.0
RUN npm install --location=global pm2
WORKDIR /var/www/project-front
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile --production
COPY ./ /var/www/project-front
RUN /bin/bash -c 'yarn build'
EXPOSE 3000
USER node

# Launch app with PM2
CMD [ "pm2-runtime", "start", "npm", "--", "start" ]

Мои зависимости typescript и @types являются зависимостями разработчиков, и поэтому они не устанавливаются в этой сборке, что приводит к сбою сборки.

Я пытался использовать параметр ignoreBuildErrors в next.config.js, но это делает многие проверки CI бесполезными. Итак, вопрос в том, действительно ли мне нужно устанавливать свои машинописные зависимости не как dev deps, или может быть есть другой способ?

Я пытаюсь добиться того, чтобы все проверки ci проверяли правильность типов, но на производстве это бесполезно, поэтому я не хочу устанавливать ненужные пакеты.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
213
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте многоэтапную сборку Docker. Например:

FROM node:16.16.0 as build
RUN yarn install --frozen-lockfile && yarn build

FROM node:16.16.0
RUN npm install --location=global pm2
WORKDIR /var/www/project-front
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile --production
COPY --from=build ./ /var/www/project-front
EXPOSE 3000
USER node

# Launch app with PM2
CMD [ "pm2-runtime", "start", "npm", "--", "start" ]

Одним из недостатков является то, что вам придется устанавливать некоторые зависимости дважды. Одной из альтернатив является копирование файлов, созданных вне сборки Docker.

думаю попробовать альтернативу

Jesper 15.12.2022 20:53

Другие вопросы по теме

Похожие вопросы

«Переместить» скрипт Python в Airflow, работающий в Docker (Windows)
Ошибка получения разрешения отказа при настройке Docker, nginx, uwsgi. Я могу вручную записывать файлы внутри контейнера
Как организовать многоэтапные Dockerfiles для многомодульных микросервисов с общими модулями
Не удается сделать HTTP-запросы из контейнера докеров наружу
Файлы журнала контейнера Docker теряются после каждого развертывания из Gitlab runner
Запуск образа докера, созданного с помощью многослойного докера, завершается неудачно — Nexts не может найти модуль реакции
TestContainers и ошибка: «Не удалось проверить соединение org.postgresql.jdbc.PgConnection» (поднятие одного контейнера для всех тестовых классов)
Докеризованный образ PostgreSQL: где получить доступ к CSV-файлу для ввода?
Docker (Apple Silicon/M1 Preview) MySQL «нет соответствующего манифеста для linux/arm64/v8 в записях списка манифеста»
Как настроить правильный nginx.conf для работы в качестве прокси-сервера с образом Alpine Docker?