В этой записи блога мы собираемся изучить Docker и пошагово создать многоэтапную сборку Docker с помощью простого приложения Nginx. Если вы только начинаете работать с Docker, не волнуйтесь, я разложу все шаг за шагом, чтобы вы могли следовать дальше!
Вот файл Dockerfile, с которым мы будем работать:
FROM node:18-alpine AS installer WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:latest AS deployer COPY --from=installer /app/build /usr/share/nginx/html
Теперь давайте шаг за шагом распакуем, что происходит в этом Dockerfile:
Эта строка извлекает официальный образ Node.js (версия 18 для Alpine Linux) из Docker Hub. Думайте о Docker Hub как о библиотеке изображений. Используя эту строку, мы указываем, что хотим использовать Node.js в качестве базового образа для первого этапа нашей сборки.
Эта команда устанавливает рабочий каталог внутри контейнера как /app. Вы можете думать об этом как о создании отдельной папки для вашего приложения внутри контейнера, аналогично тому, как вы можете организовывать файлы на рабочем столе.
Здесь мы копируем файлы package.json и package-lock.json из нашего локального каталога в рабочий каталог контейнера. Эти файлы содержат информацию о зависимостях, необходимых нашему приложению.
Эта команда запускает npm install, который устанавливает все зависимости, указанные в package.json.
Эта строка копирует остальные файлы нашего приложения в контейнер. Он переносит все из нашего локального каталога в каталог /app внутри контейнера.
Теперь мы компилируем наше приложение с помощью команды npm run build. На этом этапе наш код обычно преобразуется (в данном случае часто React) в статический пакет, готовый к предоставлению пользователям. Вывод этой команды будет помещен в каталог сборки внутри /app.
В этой строке мы переключаемся на новый базовый образ: Nginx. Nginx — мощный веб-сервер, который может обслуживать статические файлы, подобные тем, которые мы только что создали. Это начало нашего второго этапа многоэтапного процесса сборки.
Здесь мы копируем файлы встроенного приложения с предыдущего этапа (установщика) в обслуживающий каталог Nginx. Флаг --from=installer указывает Docker получить файлы с этапа установки, который мы только что определили.
После настройки Dockerfile вы можете собрать и запустить Docker-контейнер с помощью следующих команд:
docker build -t your-app-name . docker run -dp 3000:80 your-app-name
Обязательно замените имя вашего приложения на имя по вашему выбору. Флаг -dp отключит ваш контейнер и сопоставит порт 3000 на вашем хост-компьютере с портом 80 в контейнере, что позволит вам получить доступ к вашему приложению по адресу http://localhost:3000.
И вот оно! Вы только что создали многоэтапную сборку Docker, которая переносит ваше приложение от разработки к производству с использованием Nginx. Если у вас есть какие-либо вопросы или мысли по поводу этого процесса, не стесняйтесь оставлять комментарии ниже!
Одна из распространенных ошибок при работе с этой настройкой — забывают сопоставить правильные номера портов. Nginx обычно прослушивает порт 80 внутри контейнера, но если вы пытаетесь получить доступ к приложению на своем локальном компьютере, вам нужно будет перенаправить правильный порт из контейнера на свой компьютер. Например, если вы хотите получить доступ к приложению на localhost:3000, вам нужно будет запустить контейнер с флагом -p 3000:80, чтобы сопоставить порт 3000 на вашем компьютере с портом 80 в контейнере.
Пропустите этот шаг, и вы задаетесь вопросом, почему все сделано идеально, но вы не можете открыть приложение в своем браузере!
@piyushsachdeva
Видео дня 3
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3