- Опубликовано
Полное руководство по развертыванию автономного приложения Next.js с помощью Bun и Docker
- Авторы
- Имя
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Зачем развертывать Next.js с Bun и Docker?
Когда Bun достиг стабильной версии 1, а Vercel начал поддерживать его в качестве менеджера пакетов (хотя все еще полагаясь на Node для времени выполнения), меня это заинтересовало. Как можно смоделировать процесс развертывания Vercel локально? В частности, как развернуть автономное приложение Next.js с помощью Bun и Docker? Данное руководство призвано ответить на эти вопросы.
Предварительные условия
Базовое понимание Docker, Next.js и Bun
Установленный Node.js
Установленный менеджер пакетов Bun
Пошаговое руководство
Шаг 1: Настройка Dockerfile
Вот полный dockerfile
, который вам понадобится.
FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive
# Я использую Asia/Jakarta в качестве часового пояса, вы можете изменить его на свой часовой пояс
RUN apt-get -y update && \
apt-get install -yq openssl git ca-certificates tzdata && \
ln -fs /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
WORKDIR /app
# Установка зависимостей на основе предпочитаемого менеджера пакетов
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# Сборка приложения
FROM deps AS builder
WORKDIR /app
COPY . .
RUN bun run build
# Продукционный образ, копирует все файлы и запускает Next
FROM node:18-slim AS runner
WORKDIR /app
ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Раскомментируйте следующую строку, если вы хотите отключить телеметрию во время выполнения.
# ENV NEXT_TELEMETRY_DISABLED 1
COPY /app/.next/standalone ./
EXPOSE 3001
ENV PORT 3001
CMD ["node", "server.js"]
Шаг 2: Настраиваемый скрипт оболочки
Создайте настраиваемый скрипт оболочки ./build.sh.
#!/bin/bash
set -e
# Запуск сборки Next.js с переданными аргументами
next build "$@"
# Копирование файлов только в том случае, если не в среде CI
if [ -z "$CI" ]; then
cp -r ./public ./.next/standalone/public
cp -r ./.next/static ./.next/standalone/.next/static
fi
Распространенные ошибки и устранение неполадок
Я столкнулся с некоторыми проблемами во время своей первой попытки, особенно с ошибками, начинающимися с node:. Я исправил их, используя imbios/bun-node
вместо oven/bun
в качестве базового образа. Потому что нам нужен откат на Node.js для функций, которые еще не реализованы в Bun.
Заключение
Следуя этому руководству, вы должны развернуть приложение Next.js, имитируя процесс развертывания Vercel, с помощью Bun и Docker. Не стесняйтесь настраивать и оптимизировать настройку в соответствии с потребностями вашего проекта.
Что дальше?
Поделитесь этим руководством, если вы нашли его полезным, и оставьте комментарий, если у вас есть какие-либо вопросы или предложения по улучшению. Оставайтесь на связи для получения новых материалов!