logo
Web
Максим Колмогоров
Максим Колмогоров
Разработка сайтов

Упаковываем Nuxt 3 в Docker

Всем привет. Относительно недавно на свет вышел Nuxt 3, а материалов по нему в интернете еще маловато. Поэтому мы решили это исправить и показать в учебных целях, как упаковать простой проект на Nuxt 3 в Docker.

Упаковываем Nuxt 3 в Docker

Инициализируем проект на Nuxt

Сначала давайте создадим папку на рабочем столе, в которой будем работать. У нас это будет nuxt_3_docker.

Теперь создадим “hello world” проект, который потом упакуем в Docker. По адресу нашей папки (nuxt_3_docker) откройте терминал и введите команду:

npx nuxi@latest init nuxt

Мы используем Node.js 18.16.0 в данном примере.

Выполните все шаги в установке, а после перейдите в папку командой:

cd nuxt

И запустите тестовый проект:

npm run dev

В результате, Вы должны увидеть стартовый проект-заглушку:

пример nuxt 3 проекта
У автора темная тема, поэтому все черное.

Если все получилось - молодцы, нам этого достаточно, идем дальше.

Добавляем Docker

Как и с Nuxt 2, упаковать Nuxt 3 в Docker очень просто. Для начала, на одном уровне с папкой nuxt создайте файл docker-compose.yml с таким содержимым:

Весь код будет прикреплен в конце статьи, но так же оставим ссылку на gist тут.

пример docker-compose.yml файла

И тут такая логика: мы собираем nuxt, логика сборки и запуска будет описана в файле Dockerfile (чуть позже создадим). Далее, с помощью Nginx мы будем проксировать все запросы на 3000 порт, на котором будет работать nuxt.

Теперь вернитесь в папку nuxt и создайте там файл Dockerfile с таким содержимым:

пример Dockerfile файла

Что мы тут делаем: устанавливаем Node.js версии 18.16.0; ставим директорию /web как рабочую внутри Docker-контейнера и переносим туда все файлы из папки nuxt; устанавливаем пакеты; собираем nuxt; запускаем сборку.

Теперь на одном уровне с папкой nuxt создайте папку nginx и внутри нее файл nginx.conf с таким содержимым:

пример nginx.conf файла

Содержимое для nginx мы взяли с официального сайта Nuxt, правда он для Nuxt 2, но и в нашем случае идеально подойдет.

Теперь, чтобы не копировать лишний мусор в Docker, давайте удалим папку node_modules и .nuxt. В терминале вернемся на уровень выше в папку nuxt_3_docker командой:

cd ..

И запустим нашу сборку:

docker-compose up --build -d

И, в результате, по адресу localhost у нас теперь доступен наш Nuxt 3 проект:

итог nuxt 3 в docker

И как еще одно подтверждения успеха - у нас появилась папка logs внутри папки nuxt_3_docker. Там видно все логи nginx.

Весь код проекта:

***

Конечно, это простой пример, и если говорить про настоящий “боевой” проект, то у нас встает ряд вопросов:

  • Что с SSL;
  • Как более элегантно отдавать статику (не node, а именно nginx);
  • Как запустить Nuxt 3 на кластерах (у нас есть пример для Nuxt 2).

На все эти вопросы мы можем с радостью ответить в следующих статьях, если увидим читательский интерес. Спасибо за внимание.

Разработка сайта
Получите персональную стоимость на разработку сайта сегодня
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Оставьте комментарий

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Нет комментариев