- Опубликовано
Как засунуть Next.js в Docker
- Авторы
- Имя
- Дмитрий Биличенко
- @billo32
Я действительно не знаю зачем вам это может понадобиться, но если все еще хотите...
Наш план
- Установить докер - https://www.docker.com/ (скачать для своей версии ОС + пара кликов мышкой)
- Создать Next.js приложение - https://nextjs.org/ (пройтись по инструкции и выполнить в терминале
npx create-next-app@latest
)
Подготовка к контенейризации
Для начала, в root директории вашего Next.js проекта (я надеюсь что вы его уже создали) нужно добавить докерфайл с названием Dockerfile и записать в него следующие строки:
# Build Stage
FROM node:18-alpine AS BUILD_IMAGE
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production Stage
FROM node:18-alpine AS PRODUCTION_STAGE
WORKDIR /app
COPY /app/package*.json ./
COPY /app/.next ./.next
COPY /app/public ./public
COPY /app/node_modules ./node_modules
ENV NODE_ENV=production
EXPOSE 3000
CMD ["npm", "start"]
Контенейризация (создание образа)
Открыть любой терминал и перейти в папку с вашим Next.js проектом и выполнить команду
docker build -t my-great-app ./
эта команда создаст для вас docker image (саму сущность - image - можно сравнить с операционной системой, которую позже можно будет запустить), и после этого нам остается один шаг - запустить созданный image (созданную ОС) в container (это похоже на запуск ОС на виртуальной машине, т.е. image - ОС, а container - виртуалка)
ВОМОЖНЫЕ ОШИБКИ
если в процессе выполнения шагов что-то пойдет не так, и вы встретите сообщение "Docker-credential-desktop executable file not found in $PATH" в терминале, просто попробуйте решение отсюда https://stackoverflow.com/a/65896682 и все должно починиться.
Запуск (той самой ОС в той самой виртуалке)
docker run -p 3000:3000 my-great-app
Эта команда запустит ваше Next.JS приложение по адресу http://localhost:3000
Вот и все!
Если у вас все получилось - пожалуйста! Если нет - добро пожаловать в комменты...